/* * 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); }
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(); }
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; }
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(); }