Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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


static void linkTo(void);

static uint8_t  viestiLaskuri 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;
      break;
   		}
    	} while (1);

linkTo(); // linkin muodostaminen
      
while (1) ;
   
}

static void linkTo() // linkin muodostaminen
{
  uint8  	uint8_t  msg msg[2];//, delay =0;

  while  	while (SMPL_SUCCESS != SMPL_Link(&sLinkID1)) // odotetaan että linkki on muodostettu
    	{
       	 	// ledit vilkkuu kunnes linkki on onnistunut
      		BSP_TOGGLE_LED1();  
    BSP    		BSP_TOGGLE_LED2();  
    NWK    		NWK_DELAY(50); // ledit vilkkuu 50ms valein
    	}

   	// kun linkki onnistunut laitetaan vihrea ledi paalle
   	BSP_TOGGLE_LED1();

    	// radion kaynnistys
  SMPL  	SMPL_Ioctl( IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_RXON, 0); // valitaan radiocontrol ja action

    	// laitetaan viestin ensimmaiseen alkioon arvo 1
  msg  	msg[0] = 1;   // vastaan otin lukee sen vihreena ledina
  while  	while (1)
    	{
     		NWK_DELAY(100); // 100ms delay
     		msg[1] = ++viestiLaskuri; // viestin toiseen alkioon viestien maara
    SMPL    		SMPL_Send(sLinkID1, 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  	if (port == sLinkID1)
   	{
     
     		if ((SMPL_SUCCESS == SMPL_Receive(sLinkID1, msg, &len))) //
       		{
      
    BSP 			BSP_TOGGLE_LED2(); // jos viestin vastaan otto onnistunut niin punanen ledi paalle
      
       			return 1;
        		}
    	}
  
  return   	return 0;
}
Vastaanotto:
Code Block
#include "bsp.h"
#include "mrfi.h"
#include "nwk_types.h"
#include "nwk_api.h"
#include "bsp_leds.h"
#include "bsp_buttons.h"

static void linkFrom(void);

void toggleLED(uint8_t);

static          uint8_t  viestiLaskuri = 0;
static          linkID_t sLinkID2 = 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];

 /* listen for link forever... */
 while (1)
   {
    BSP_TOGGLE_LED2();
 if (SMPL_SUCCESS == SMPL_LinkListen(&sLinkID2)) // kuuntelee niin kauan kunnes linkki on valmis
 {
 break;
 }
    }



   // radion käynnistys
   SMPL_Ioctl( IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_RXON, 0); // valitaan "radiocontrol ja action"
   
   msg[0] = 2;

   while (1)
   {
 if (viestiVastaanotettu)
 {
 msg[1] = ++viestiLaskuri; // laitaan viestilaskuri +1 viestin ensimmäiseen alkioon
 SMPL_Send(sLinkID2, msg, sizeof(msg)); // lähetetään viesti
 viestiVastaanotettu = 0;
 }
 }
}

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

  // tarkisetaan vastaan otetavan viestin ID
 if (port == sLinkID2)
 {
 if (SMPL_SUCCESS == SMPL_Receive(sLinkID2, msg, &len)) // jos viestin vastaanotto onnistunut niin vihreä ledi päälle
 {
 BSP_TOGGLE_LED1();
 viestiVastaanotettu = 1;
 return 1;
 }
 }
  return 0;
}

...