Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Testasimme 4 laitteen välisen yhteyden seuraavilla koodeilla. Yhdestä laudasta teimme masterin joka sai tiedon kolmelta slave laudalta. Slave laudassa nappia painamalla masterissa syttyy vihreä ledi. Slave lautojen ohjelman ainoona ainoana erona oli osoitteen vaihtaminen smpl_config.dat tiedostosta :

...

Code Block
#include "bsp.h"
#include "mrfi.h"
#include "nwk_types.h"
#include "nwk_api.h"
#include "bsp_leds.h"
#include "bsp_buttons.h"
#include "nwk.h"

// static void linkFrom(void); // jos halutaan lähettää viestiä vastaanottimelta, poistetaan tämän kommentointi// static void linkFrom(void);
static volatile uint8_t  viestiVastaanotettu = 0;
static uint8_t sRxCallback(linkID_t);

void main (void)
{
       BSPBSP_Init(); // laudan alustus
       SMPLSMPL_Init(sRxCallback); // radion ja SimpliTi alustus
       BSPBSP_TOGGLE_LED1(); // vihreä ledi päälle
       dodo {
        if        if (BSP_BUTTON1()) // odotetaan että nappia painetaan
        {
            break;
        }
            {
        	SMPL_Ioctl( IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_RXON, 0); // radion käynnistys
        	break;
        }
    } while (1);
     // linkFrom(); // jos halutaan lähettää viestiä vastaanottimelta, poistetaan tämän kommentointi
    while    // linkFrom();
    while (1) ;
}


// jos halutaan lähettää viestiä vastaanottimelta, poistetaan tämän kommentointi
/*
static void linkFrom()
{
       uint8_t    uint8_t     msg[1];

    SMPL_Ioctl( IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_RXON, 0); // radion käynnistys
   
    msg msg[0] = 1;

      
    whilewhile (1)
       {
        if        if (viestiVastaanotettu)
        {
            SMPL        {
            SMPL_Send(SMPL_LINKID_USER_UUD, msg, sizeof(msg));
            viestiVastaanotettu            viestiVastaanotettu = 0;
        }
            }
    }
}
*/

static uint8_t sRxCallback(linkID_t port) // viestin takaisin vastaanotto
{
       uint8uint8_t msg[2], len;

       ifif (port == SMPL_LINKID_USER_UUD) // tarkisetaan vastaan otetavan viestin ID
       {
        if        if (SMPL_SUCCESS == SMPL_Receive(SMPL_LINKID_USER_UUD, msg, &len))
        {
            uint16        {
            uint16_t led=msg[20];
            if            if (led == 2) BSP_TOGGLE_LED2();
            
            uint16

            uint16_t led1=msg[1];
            if            if (led1 == 1) BSP_TOGGLE_LED1();

            viestiVastaanotettu            // jos halutaan lähettää viestiä vastaanottimelta, poistetaan tämän kommentointi            // viestiVastaanotettu = 1;
            
            return

            return 1;
        }
    }
         }
    }
  return 0;
}

Slave koodi:

Code Block
#include "bsp.h"
#include "mrfi.h"
#include "nwk_types.h"
#include "nwk_api.h"
#include "bsp_leds.h"
#include "bsp_buttons.h"
#include "nwk.h"
 
static void linkTo(void);
static linkID_t sLinkID1 = 0;
static uint8_t sRxCallback(linkID_t);
 
void main(void) // Pääohjelma alkaa tästä
{
    BSP_Init(); // laudan alustus
    SMPL_Init(sRxCallback); // radion alustus
    BSP_TOGGLE_LED2(); // punanen ledi paalle
 
    do
    {
        if (BSP_BUTTON1()) // odotetaan etta nappia painetaan
        {
            break;
        }
    } while (1);

linkTo(); // linkin muodostaminen
while (1) ;
}
 
static void linkTo() // linkin muodostaminen
{
    uint8_t  msg[2];


    // kun linkki onnistunut laitetaan vihrea ledi paalle
    BSP_TOGGLE_LED1();
 
    // radion kaynnistys
    SMPL_Ioctl( IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_RXON, 0); // valitaan radiocontrol ja action
 
    // valitaan kumpi viesti lähetetään takaisin ja kommentoidaan toinen
    msg[1] = 1;  // vastaan otin lukee sen vihreena ledinä
    msg[2] = 2;  // vastaan otin lukee sen punasena ledinä

    while (1)
    {
        if(BSP_BUTTON1())
        {
            NWK_DELAY(100); // 100ms delay
        SMPL            SMPL_Send(SMPL_LINKID_USER_UUD, msg, sizeof(msg)); // lahetetaan viesti
        }
    }
}
 
static uint8_t sRxCallback(linkID_t port) // viestin takaisin vastaanotto
{
    uint8_t msg[2], len;
 
    // tarkisetaan vastaan otetavan viestin ID
    if (port == SMPL_LINKID_USER_UUD)
    {
          // tänne voi laittaan viestin vastaanotto...
    }
    return 0;
}