Beispiel #1
0
/*
 * Sends an RC-5 packet, with address "addr", command "cmd" from the led "led"
 * led can be CMDLED (front leds) or PROGLED (back led)
 */
void send_packet(unsigned char addr, unsigned char cmd, unsigned char led)
{
	static unsigned char toggle_last = 0;

	send_one(led);
	send_one(led);

	if (toggle_last) {
		toggle_last = 0;
		send_one(led);
	} else {
		toggle_last = 1;
		send_zero(led);
	}

	unsigned char i;
	for (i = 0; i < 5; i++) {
		if (addr & _BV(4 - i)) {
			send_one(led);
		} else {
			send_zero(led);
		}
	}

	for (i = 0; i < 6; i++) {
		if (cmd & _BV(5 - i)) {
			send_one(led);
		} else {
			send_zero(led);
		}
	}

	ir_off(led);
}
Beispiel #2
0
void send_command(int throttle, int leftright, int forwardbackward)
{
	send_header();
	// TODO: finish...
	send_one();
	send_one();
	send_zero();
	send_zero();
	//send_zero();
	//send_one();
}
Beispiel #3
0
void
set_freq_sf16fmd2(u_int16_t frequency) {
	int c = 0x0f;
	u_int16_t freq = (u_int16_t)
		((float)frequency*0.7985714+871.28571);

	/* Search end - station found */
	send_zero(3);

	/* Search down */
	send_zero(3);

	/* Stereo/Forced Mono */
	if (stereo)
		send_zero(3);
	else
		send_one(3);

	/* FM band */
	send_zero(3);
	send_zero(3);

	/* Band switch */
	send_zero(3);
	send_zero(3);

	/* Locking field strength during search > 30 mkV */
	send_one(3);
	send_zero(3);

	/* Dummy */
	send_zero(3);

	while (c--)
		if (freq & (1 << c))
			send_one(2);
		else
			send_zero(2);

	usleep(AFC_DELAY);
	return;
}
Beispiel #4
0
void send_command(int leftright, int forwardbackward, int throttle, int trim)
{
	int i;

	send_header();

	for (i = 7; i >= 0; i--) {
		if (leftright & (1 << i)) {
			send_one();
		} else {
			send_zero();
		}
	}

	for (i = 7; i >= 0; i--) {
		if (forwardbackward & (1 << i)) {
			send_one();
		} else {
			send_zero();
		}
	}

	for (i = 7; i >= 0; i--) {
		if (throttle & (1 << i)) {
			send_one();
		} else {
			send_zero();
		}
	}

	for (i = 7; i >= 0; i--) {
		if (trim & (1 << i)) {
			send_one();
		} else {
			send_zero();
		}
	}

	/* there is actually a 1 bit footer */
	send_one();
}