/** * @brief Initialise the module * * @return -1 if initialisation failed on success */ static int32_t RadioComBridgeInitialize(void) { // allocate and initialize the static data storage only if module is enabled data = (RadioComBridgeData *) PIOS_malloc(sizeof(RadioComBridgeData)); if (!data) { return -1; } // Initialize the UAVObjects that we use RFM22BStatusInitialize(); ObjectPersistenceInitialize(); RFM22BReceiverInitialize(); RadioComBridgeStatsInitialize(); // Initialise UAVTalk data->telemUAVTalkCon = UAVTalkInitialize(&UAVTalkSendHandler); data->radioUAVTalkCon = UAVTalkInitialize(&RadioSendHandler); // Initialize the queues. data->uavtalkEventQueue = PIOS_Queue_Create(EVENT_QUEUE_SIZE, sizeof(UAVObjEvent)); data->radioEventQueue = PIOS_Queue_Create(EVENT_QUEUE_SIZE, sizeof(UAVObjEvent)); // Initialize the statistics. data->telemetryTxRetries = 0; data->radioTxRetries = 0; data->parseUAVTalk = true; return 0; }
extern int32_t PIOS_RFM22B_Rcvr_Init(uintptr_t * rfm22b_rcvr_id, uint32_t rfm22b_id) { struct pios_rfm22b_rcvr_dev *rfm22b_rcvr_dev; /* Allocate the device structure */ rfm22b_rcvr_dev = (struct pios_rfm22b_rcvr_dev *)PIOS_RFM22B_Rcvr_alloc(); if (!rfm22b_rcvr_dev) { return -1; } /* Register uavobj callback */ RFM22BReceiverInitialize(); *rfm22b_rcvr_id = (uintptr_t) rfm22b_rcvr_dev; PIOS_RFM22B_RegisterRcvr(rfm22b_id, *rfm22b_rcvr_id); /* Register the failsafe timer callback. */ if (!PIOS_RTC_RegisterTickCallback (PIOS_RFM22B_Rcvr_Supervisor, *rfm22b_rcvr_id)) { PIOS_DEBUG_Assert(0); } return 0; }