int main(void) { WordVal src_addr_init = {SRC_ADDR}; WordVal src_pan_id_init = {SRC_PAN_ID}; WordVal dst_addr_init = {DST_ADDR}; SetupClock(); SwitchClocks(); SetupPorts(); batSetup(); swatchSetup(); radioInit(src_addr_init, src_pan_id_init, RXPQ_MAX_SIZE, TXPQ_MAX_SIZE); radioSetChannel(MY_CHAN); //Set to my channel macSetDestAddr(dst_addr_init); dfmemSetup(); unsigned char memsize; memsize = dfmemGetChipSize(); xlSetup(); gyroSetup(); mcSetup(); cmdSetup(); //senSetup(); adcSetup(); pidSetup(); steeringSetup(); //radioReadTrxId(id); LED_RED = 1; LED_BLUE = 0; LED_YELLOW = 0; //while(1); if(phyGetState() == 0x16) { LED_GREEN = 1; } //print("Ready"); //readDFMemBySample(5); while(1) { cmdHandleRadioRxBuffer(); //Simple idle ; reduces idle current to 70 mA // TODO (abuchan, apullin, fgb) : Idle() causes unexpected behavior //if(radioIsRxQueueEmpty()){ // Idle(); //} } }
// Figures out memory geometry by querying its size static void dfmemGeometrySetup(void) { unsigned char size; size = dfmemGetChipSize(); switch(size){ case DFMEM_8MBIT: dfmem_geo.max_sector = FLASH_8MBIT_MAX_SECTOR; dfmem_geo.max_pages = FLASH_8MBIT_MAX_PAGES; dfmem_geo.buffer_size = FLASH_8MBIT_BUFFERSIZE; dfmem_geo.bytes_per_page = FLASH_8MBIT_BYTES_PER_PAGE; dfmem_geo.pages_per_block = FLASH_8MBIT_PAGES_PER_BLOCK; dfmem_geo.blocks_per_sector = FLASH_8MBIT_BLOCKS_PER_SECTOR; dfmem_geo.pages_per_sector = FLASH_8MBIT_PAGES_PER_SECTOR; dfmem_geo.byte_address_bits = FLASH_8MBIT_BYTE_ADDRESS_BITS; break; case DFMEM_16MBIT: dfmem_geo.max_sector = FLASH_16MBIT_MAX_SECTOR; dfmem_geo.max_pages = FLASH_16MBIT_MAX_PAGES; dfmem_geo.buffer_size = FLASH_16MBIT_BUFFERSIZE; dfmem_geo.bytes_per_page = FLASH_16MBIT_BYTES_PER_PAGE; dfmem_geo.pages_per_block = FLASH_16MBIT_PAGES_PER_BLOCK; dfmem_geo.blocks_per_sector = FLASH_16MBIT_BLOCKS_PER_SECTOR; dfmem_geo.pages_per_sector = FLASH_16MBIT_PAGES_PER_SECTOR; dfmem_geo.byte_address_bits = FLASH_16MBIT_BYTE_ADDRESS_BITS; break; case DFMEM_32MBIT: dfmem_geo.max_sector = FLASH_32MBIT_MAX_SECTOR; dfmem_geo.max_pages = FLASH_32MBIT_MAX_PAGES; dfmem_geo.buffer_size = FLASH_32MBIT_BUFFERSIZE; dfmem_geo.bytes_per_page = FLASH_32MBIT_BYTES_PER_PAGE; dfmem_geo.pages_per_block = FLASH_32MBIT_PAGES_PER_BLOCK; dfmem_geo.blocks_per_sector = FLASH_32MBIT_BLOCKS_PER_SECTOR; dfmem_geo.pages_per_sector = FLASH_32MBIT_PAGES_PER_SECTOR; dfmem_geo.byte_address_bits = FLASH_32MBIT_BYTE_ADDRESS_BITS; break; case DFMEM_64MBIT: dfmem_geo.max_sector = FLASH_64MBIT_MAX_SECTOR; dfmem_geo.max_pages = FLASH_64MBIT_MAX_PAGES; dfmem_geo.buffer_size = FLASH_64MBIT_BUFFERSIZE; dfmem_geo.bytes_per_page = FLASH_64MBIT_BYTES_PER_PAGE; dfmem_geo.pages_per_block = FLASH_64MBIT_PAGES_PER_BLOCK; dfmem_geo.blocks_per_sector = FLASH_64MBIT_BLOCKS_PER_SECTOR; dfmem_geo.pages_per_sector = FLASH_64MBIT_PAGES_PER_SECTOR; dfmem_geo.byte_address_bits = FLASH_64MBIT_BYTE_ADDRESS_BITS; break; default: // TODO (apullin, fgb) : Do something. Probably communicate back with user. break; } }