Пример #1
0
/**
 * @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;
}
Пример #2
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;
}