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 lautassa laudassa nappia painamalla masterissa syttyi punanen/syttyy vihreä ledi. Slave lautojen ohjelman ainoana erona oli osoitteen vaihtaminen smpl_config.dat tiedostosta :

--define=THIS_DEVICE_ADDRESS="{0x93, 0x56, 0x34, 0x12}"

Masterin 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"

// jos halutaan lähettää viestiä vastaanottimelta, poistetaan tämän kommentointi// static void linkFrom(void);

void toggleLED(uint8_t);

static          uint8_t  viestiLaskuri = 0;
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    // linkFrom();
 // linkin muodostaminen
    whilewhile (1) ;
}


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

    SMPL_Ioctl( IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_RXON, 0); // radion käynnistys
   
    msg msg[0] = 1;
    
    while
    while (1)
       {
        if        if (viestiVastaanotettu)
        {
            msg[1] = ++viestiLaskuri;
            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[0];
            if            if (led == 2) BSP_TOGGLE_LED2();
            
            uint16
            uint16_t led1=msg[1];
            if            if (led1 == 1) BSP_TOGGLE_LED1();

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

            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);

            viestiVastaanotettu = 1;
            
            return 1;
        }
    }
 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_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;
}