Esempio n. 1
0
int main(int argc, char ** argv) {
	int res;
	printf("Start rpiCC2500\n");

	TICC *cc = (TICC *) malloc(sizeof(TICC));

	res = CC_Init(cc, "/dev/spidev0.0", 25 /*GNO0-pin Not yet used*/);
	if (res < 0) {
		printf("Failed to init TICC.");
		return 1;
	}
	perror("SPI init");
	usleep(30000);
	TI_CC_SPIStrobe( cc->fd, TI_CCxxx0_SRES);
	printf("Wait for RF to be Ready\n");
	usleep(40);
	printf("RF ok\n");
		
	writeRFSettings(cc);
	printf("BurstReg\n");
	TI_CC_SPIWriteBurstReg(cc->fd, TI_CCxxx0_PATABLE, paTable, paTableLen);
	printf("Strobe\n");
	//TI_CC_SPIStrobe(cc->fd, TI_CCxxx0_SRX);           // Initialize CCxxxx in RX mode.
										// When a pkt is received, it will
										// signal on GDO0
	char rxBuffer[50];
	printf("entering LOOP\n");
	printf("Part No.: %d\n",TI_CC_SPIReadStatus(cc->fd, TI_CCxxx0_PARTNUM));
	printf("Version No.: %d\n",TI_CC_SPIReadStatus(cc->fd, TI_CCxxx0_VERSION));
	char len = 50;
	int j,i;
	for(j=0;j<10;j++){  // for now send every 500ms a message and check for received packages
		rxBuffer[0] =3;
		rxBuffer[1] =0x01;
		rxBuffer[2] =12;
		rxBuffer[3] =rxBuffer[1]^rxBuffer[2]^0x01;
		printf("Send Package\n");
		RFSendPacket(cc, rxBuffer, 4);
		usleep(500000);
		
		printf("Check for Package\n");
		while(RFReceivePacket(cc, rxBuffer, &len)){
				printf("Got A Package %d\n",len);
				for(i =0; i< len; i++){
						printf("%d ",rxBuffer[i]);
				}
				printf("\n");
				//Receiveddata are stored in rxBuffer
				//Put some intelligence here
				len = 50;
		}
		
	}

	printf("exiting LOOP\n");
	CC_dispose(cc);
	free(cc);

	return 0;
}
Esempio n. 2
0
__interrupt void port2_ISR (void)
{
  char len=2;                               // Len of pkt to be RXed (only addr
                                            // plus data; size byte not incl b/c
                                            // stripped away within RX function)
  if (RFReceivePacket(rxBuffer,&len))       // Fetch packet from CCxxxx
    TI_CC_LED_PxOUT ^= rxBuffer[1];         // Toggle LEDs according to pkt data

  TI_CC_GDO0_PxIFG &= ~TI_CC_GDO0_PIN;                 // Clear flag
}
Esempio n. 3
0
void MiraTrama(void) {
    char len;
    if (TramaRebuda) {
        TramaRebuda = 0;
        len=LengthDATA+1;                 				// Longitud de les dades mçes l'adreça de xarxa
        if(RadioMode == RX_Mode) {
            if (RFReceivePacket(rxBuffer1,&len))  {     // Fetch packet from CCxxxx
                ProcessaTrama((unsigned char *)rxBuffer1);
            }
        }
    }
}
Esempio n. 4
0
__interrupt void PORT2_ISR()
{
   // if GDO fired
  if(TI_CC_GDO0_PxIFG & TI_CC_GDO0_PIN)
  {
    char len=11;                            // Len of rx packet expected
    if (RFReceivePacket(rxBuffer,&len)) 	// Check for a received packet
    {
        if(rxBuffer[DATA_REQUEST_RX_INDEX] == OPERATE_SENSOR){// if the packet indicates that the sensor should read data...
        	water_level_request = 1; // set flag to indicate a request is received.
        }
     }
    TI_CC_GDO0_PxIFG &= ~TI_CC_GDO0_PIN;      // After pkt RX, this flag is set.
  }
}
Esempio n. 5
0
__interrupt void PORT2_ISR()
{
   // if GDO fired
  if(TI_CC_GDO0_PxIFG & TI_CC_GDO0_PIN) 	// Verify that the interrupt is from the radio
  {
    char len=11;                            // Len of rx packet expected
    if (RFReceivePacket(rxBuffer,&len)) 	// RFReceive checks the radio for new data and fills rxBuffer
    {
        // Fetch packet from CC110
		P2OUT |= (rxBuffer[1]) ? BIT4 : 0; // turn on an LED if the water level is valid
		rx_water_level_data = 1; // set flag to indicate that sensor data has been received
     }
  }

  TI_CC_GDO0_PxIFG &= ~TI_CC_GDO0_PIN;      // After pkt RX, this flag is set.
}
Esempio n. 6
0
__interrupt void Port2_ISR(void)
{
    // if GDO fired
  if(TI_CC_GDO0_PxIFG & TI_CC_GDO0_PIN)
  {
    char len=2;                             // Len of pkt to be RXed (only addr
                                            // plus data; size byte not incl b/c
                                            // stripped away within RX function)
    if (RFReceivePacket(rxBuffer,&len))     // Fetch packet from CCxxxx
    TI_CC_LED_PxOUT ^= rxBuffer[1];         // Toggle LEDs according to pkt data
  }

  j = 0;
  IE2 |= UCA0TXIE;                        // Enable USCI_A0 TX interrupt
  UCA0TXBUF = string1[j++];
  TI_CC_GDO0_PxIFG &= ~TI_CC_GDO0_PIN;      // After pkt RX, this flag is set.
}
__interrupt void port1_ISR (void)
{
  char len=2;                               // Len of pkt to be RXed (only addr
                                            // plus data; size byte not incl b/c
                                            // stripped away within RX function)
  switch(__even_in_range(P1IV,16))
  {
    case 0: break;
    case 2: break;                          // Vector P1IFG.0
    case 4: break;                          // Vector P1IFG.1
    case 6: break;                          // Vector P1IFG.2
    case 8: break;                          // Vector P1IFG.3
    case 10: break;                         // Vector P1IFG.4
    case 12: break;                         // Vector P1IFG.5
    case 14: break;                         // Vector P1IFG.6
    case 16:                                // Vector P1IFG.7
      if (RFReceivePacket(rxBuffer,&len))   // Fetch packet from CCxxxx
        TI_CC_LED_PxOUT ^= rxBuffer[1];     // Toggle LEDs according to pkt data
      break;
  }
}
Esempio n. 8
0
__interrupt void port1_ISR (void)
{
  if(P1IFG & (TI_CC_SW1 + TI_CC_SW2))
  {
    // Build packet
    txBuffer[0] = 2;                           // Packet length
    txBuffer[1] = 0x01;                        // Packet address
    txBuffer[2] = (~TI_CC_SW_PxIN) & 0x0F;     // Load four switch inputs

    RFSendPacket(txBuffer, 3);                 // Send value over RF
  }
  else if(P1IFG & TI_CC_GDO0_PIN)
  {
    char len=2;                               // Len of pkt to be RXed (only addr
                                            // plus data; size byte not incl b/c
                                            // stripped away within RX function)
    if (RFReceivePacket(rxBuffer,&len))       // Fetch packet from CCxxxx
      TI_CC_LED_PxOUT ^= rxBuffer[1];         // Toggle LEDs according to pkt data
  }
//  P1IFG &= ~(TI_CC_SW1+TI_CC_SW2+TI_CC_SW3+TI_CC_SW4);//Clr flag that caused int

  TI_CC_SW_PxIFG &= ~(TI_CC_SW1+TI_CC_SW2); // Clr flag that caused int
  TI_CC_GDO0_PxIFG &= ~TI_CC_GDO0_PIN;      // After pkt TX, this flag is set.
}                                           // Clear it.