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; }
FORCE_INLINE void GeneralInit(void) { wdt_enable(WDTO_2S); ACSR = 1<<ACD; // Disable analog comparator // Shutdown all unneeded PRR = (1<<PRTWI)|(1<<PRSPI)|(1<<PRADC); MustSleep = false; // Setup timer TimerInit(); // Light LED_DDR |= (1<<RED_P)|(1<<GREEN_P)|(1<<BLUE_P); LED_PORT &= ~((1<<RED_P)|(1<<GREEN_P)|(1<<BLUE_P)); LED_UF_DDR |=(1<<UF_P); LED_UF_PORT &=~(1<<UF_P); // Led power // LED_PWR_PORT &= ~(1<<LED_PWR_P); // Low if output, Hi-Z if input // LED_PWR_OFF(); TCCR0A = (1<<WGM01)|(1<<WGM00); TCCR0B = (0<<WGM02)|(0<<CS02)|(0<<CS01)|(1<<CS00); TCCR2A = (1<<WGM21)|(1<<WGM20); TCCR2B = (0<<WGM22)|(0<<CS22)|(0<<CS21)|(1<<CS20); TimerResetDelay(&ELight.Timer); ELight.Indx = 0; SetTableColor(); ELight.SavedColor = ELight.DesiredColor; SetDesiredColor(0, 0, 0,0); // Initial fade ELight.UfIsOn = false; // Sensors SENS_DDR &= ~((1<<SENS_DOWN)|(1<<SENS_UP)|(1<<SENS_UF_SWITCH)); SENS_DDR |= 1<<SENS_PWR; SENS_PORT &= ~((1<<SENS_DOWN)|(1<<SENS_UP)|(1<<SENS_UF_SWITCH)); // No pull-ups // SENS_PWR_OFF(); /* ESens.DownIsOn = false; ESens.UpIsOn = false; ESens.UfIsOn = false; ESens.BothIsOn = false; */ ESens.PollTime = SENS_POLL_TIME; ESens.Step=SENS_STATE_START; TimerResetDelay (&ESens.Timer); // CC init CC_Init(); CC_SetAddress(4); // Never changes in CC itself }
FORCE_INLINE void GeneralInit(void){ wdt_enable(WDTO_2S); ACSR = 1<<ACD; // Disable analog comparator TimerInit(); // LED init LED_DDR |= (1<<LED_P); // CC init TimerResetDelay(&CCSrv.Timer); CC.TX_Pkt.PacketID = 1; CC_Init(); CCSrv.Pwr = HiPwr; CC_SetChannel(45); // Set needed channel // Battery BatteryInit(); sei(); }