...
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); void toggleLED(uint8_t); static uint8_t viestiLaskuri = 0; static volatile uint8_t viestiVastaanotettu = 0; static uint8_t sRxCallback(linkID_t); void main (void) { BSP_Init(); // laudan alustus SMPL_Init(sRxCallback); // radion ja SimpliTi alustus BSP_TOGGLE_LED1(); // vihreä ledi päälle do { if (BSP_BUTTON1()) // odotetaan että nappia painetaan { break; } } while (1); linkFrom(); // linkin muodostaminen while (1) ; } static void linkFrom() { uint8_t msg[2]; SMPL_Ioctl( IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_RXON, 0); // radion käynnistys msg[0] = 1; while (1) { if (viestiVastaanotettu) { msg[1] = ++viestiLaskuri; SMPL_Send(SMPL_LINKID_USER_UUD, msg, sizeof(msg)); viestiVastaanotettu = 0; } } } static uint8_t sRxCallback(linkID_t port) // viestin takaisin vastaanotto { uint8_t msg[2], len; if (port == SMPL_LINKID_USER_UUD) // tarkisetaan vastaan otetavan viestin ID { if (SMPL_SUCCESS == SMPL_Receive(SMPL_LINKID_USER_UUD, msg, &len)) { uint16_t led=msg[0]; if (led == 2) BSP_TOGGLE_LED2(); uint16_t led1=msg[1]; if (led1 == 1) BSP_TOGGLE_LED1(); 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);
static uint8_t viestiLaskuri=0;
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];//, delay =0;
/*
while (SMPL_SUCCESS != SMPL_Link(&sLinkID1)) // odotetaan että linkki on muodostettu
{
// ledit vilkkuu kunnes linkki on onnistunut
BSP_TOGGLE_LED1();
BSP_TOGGLE_LED2();
NWK_DELAY(50); // ledit vilkkuu 50ms valein
}
*/
// 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
// laitetaan viestin ensimmaiseen alkioon arvo 1
msg[1] = 1; // vastaan otin lukee sen vihreena ledina
while (1)
{
if(BSP_BUTTON1())
{
NWK_DELAY(100); // 100ms delay
//msg[1] = ++viestiLaskuri; // viestin toiseen alkioon viestien maara
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 vastaanottamisen....
}
return 0;
}
|