示例#1
0
static void PIOS_gcsrcvr_Supervisor(uintptr_t gcsrcvr_id) {
	/* Recover our device context */
	struct pios_gcsrcvr_dev * gcsrcvr_dev = (struct pios_gcsrcvr_dev *)gcsrcvr_id;

	if (!PIOS_gcsrcvr_validate(gcsrcvr_dev)) {
		/* Invalid device specified */
		return;
	}

	/* 
	 * RTC runs at 625Hz.
	 */
	if(++(gcsrcvr_dev->supv_timer) < (PIOS_GCSRCVR_TIMEOUT_MS * 1000 / 625)) {
		return;
	}
	gcsrcvr_dev->supv_timer = 0;

	if (!gcsrcvr_dev->Fresh)
		for (int32_t i = 0; i < GCSRECEIVER_CHANNEL_NUMELEM; i++)
			gcsreceiverdata.Channel[i] = PIOS_RCVR_TIMEOUT;

	gcsrcvr_dev->Fresh = false;
}
示例#2
0
static void PIOS_gcsrcvr_Supervisor(uint32_t gcsrcvr_id) {
	/* Recover our device context */
	struct pios_gcsrcvr_dev * gcsrcvr_dev = (struct pios_gcsrcvr_dev *)gcsrcvr_id;

	if (!PIOS_gcsrcvr_validate(gcsrcvr_dev)) {
		/* Invalid device specified */
		return;
	}

	/* 
	 * RTC runs at 625Hz so divide down the base rate so
	 * that this loop runs at 25Hz.
	 */
	if(++(gcsrcvr_dev->supv_timer) < 25) {
		return;
	}
	gcsrcvr_dev->supv_timer = 0;

	if (!gcsrcvr_dev->Fresh)
		for (int32_t i = 0; i < GCSRECEIVER_CHANNEL_NUMELEM; i++)
			gcsreceiverdata.Channel[i] = PIOS_RCVR_TIMEOUT;

	gcsrcvr_dev->Fresh = FALSE;
}