void PtTransmit (BRFPacket * pkg, unsigned char broadcast) { int i; static BRFPacket backup; if (TX_COMMAND_RETRIES > 1) backup = *pkg; if (broadcast) PtUpdateWmcuId (pdTRUE); for (i = 0; i < TX_COMMAND_RETRIES; i++) { if (i) *pkg = backup; vTaskDelay (((RndNumber () % 5) / portTICK_RATE_MS)); PtInternalTransmit (pkg); } if (broadcast) { vTaskDelay ((3 + (RndNumber () % 5) / portTICK_RATE_MS)); PtUpdateWmcuId (pdFALSE); } }
static void cmd_id (const portCHAR * cmd) { int mcu_id = 0, lamp_id = 0; while (*cmd && *cmd != ' ') cmd++; cmd++; while (*cmd >= '0' && *cmd <= '9') { mcu_id *= 10; mcu_id += *cmd - '0'; cmd++; } if (*cmd != ' ') { shell_print ("parameter missing\n"); return; } cmd++; while (*cmd >= '0' && *cmd <= '9') { lamp_id *= 10; lamp_id += *cmd - '0'; cmd++; } shell_print ("setting wmcu id "); DumpUIntToUSB (mcu_id); shell_print (", lamp id "); DumpUIntToUSB (lamp_id); shell_print ("\n"); if (mcu_id != env.e.wmcu_id || lamp_id != env.e.lamp_id) { env.e.wmcu_id = mcu_id; env.e.lamp_id = lamp_id; PtUpdateWmcuId ( env.e.wmcu_id ); vTaskDelay (100 / portTICK_RATE_MS); shell_print ("storing.\n"); env_store(); } else { shell_print ("not storing, values are the same.\n"); } }
static inline s_int8_t PtInitNRF (void) { if (!nRFAPI_Init (DEFAULT_CHANNEL, broadcast_mac, sizeof (broadcast_mac), ENABLED_NRF_FEATURES)) return 0; jam_density_ms = DEFAULT_JAM_DENSITY; nrf_powerlevel_last = nrf_powerlevel_current = -1; PtSetRfPowerLevel (NRF_POWERLEVEL_MAX); nRFAPI_SetSizeMac (sizeof (wmcu_mac)); nRFAPI_SetPipeSizeRX (0, sizeof (rfpkg)); nRFAPI_SetPipeSizeRX (1, sizeof (rfpkg)); nRFAPI_PipesEnable (ERX_P0 | ERX_P1); PtUpdateWmcuId (env.e.mcu_id == 0); nRFAPI_SetRxMode (0); nRFCMD_CE (0); return 1; }