void rfm12_ask_2272_send(uint8_t *command, uint8_t delay, uint8_t cnt) { uint8_t code[49]; for(uint8_t i=0;i<3;i++) { rfm12_ask_encode_tribit(code, i*16, command[i], 8); } code[48]=7; //sync rfm12_prologue (); rfm12_trans(0x8200|(1<<5)|(1<<4)|(1<<3)); // 2. PwrMngt TX on for(uint8_t ii=cnt;ii>0;ii--) // Sequenz cnt send { wdt_kick(); uint8_t rfm12_trigger_level=0; for(uint8_t i=0;i<49;i++) { rfm12_ask_trigger(rfm12_trigger_level^=1,code[i]*delay); } rfm12_ask_trigger(0,24*delay); } rfm12_trans(0x8208); // 2. PwrMngt TX off rfm12_epilogue (); }
void rfm12_ask_tevion_send(uint8_t * housecode, uint8_t * command, uint8_t delay, uint8_t cnt) { uint8_t code[41]; for(uint8_t i=0;i<3;i++) { rfm12_ask_encode_byte(code, i*8, housecode[i], 8); } code[24]=((housecode[2] & (1<<0))>0 ?6:12); for(uint8_t i=0;i<2;i++) { rfm12_ask_encode_byte(code, (i*8)+25, command[i], 8); } rfm12_prologue (); rfm12_trans(0x8200|(1<<5)|(1<<4)|(1<<3)); // 2. PwrMngt TX on for(uint8_t ii=cnt;ii>0;ii--) // Sequenz cnt send { wdt_kick(); uint8_t rfm12_trigger_level=0; for(uint8_t i=0;i<41;i++) { rfm12_ask_trigger(rfm12_trigger_level^=1,code[i]*delay); } rfm12_ask_trigger(0,24*delay); } rfm12_trans(0x8208); // 2. PwrMngt TX off rfm12_epilogue (); }
static void rfm12_ask_2272_1527_send(uint8_t * command, uint8_t delay, uint8_t cnt, const uint8_t * duty_factor) { uint8_t code[49]; uint8_t *p = code; for (uint8_t i = 0; i < 3; i++) { uint8_t byte = command[i]; for (uint8_t mask = 0x80; mask; mask >>= 1) { if (byte & mask) { *p++ = pgm_read_byte(duty_factor); *p++ = pgm_read_byte(duty_factor + 1); } else { *p++ = pgm_read_byte(duty_factor + 2); *p++ = pgm_read_byte(duty_factor + 3); } } } *p = 7; // sync rfm12_prologue(); rfm12_trans(RFM12_CMD_PWRMGT | RFM12_PWRMGT_ET | RFM12_PWRMGT_ES | RFM12_PWRMGT_EX); for (uint8_t ii = cnt; ii > 0; ii--) { wdt_kick(); uint8_t rfm12_trigger_level = 0; for (uint8_t i = 0; i < 49; i++) { rfm12_ask_trigger(rfm12_trigger_level ^= 1, code[i] * delay); } rfm12_ask_trigger(0, 24 * delay); } rfm12_trans(RFM12_CMD_PWRMGT | RFM12_PWRMGT_EX); rfm12_epilogue(); }
void rfm12_ask_tevion_send(uint8_t * housecode, uint8_t * command, uint8_t delay, uint8_t cnt) { uint8_t code[41]; uint8_t *p = code; for (uint8_t i = 0; i < 3; i++) { uint8_t byte = housecode[i]; for (uint8_t mask = 0x80; mask; mask >>= 1) { *p++ = byte & mask ? 12 : 6; } } *p++ = housecode[2] & 1 ? 6 : 12; for (uint8_t i = 0; i < 2; i++) { uint8_t byte = command[i]; for (uint8_t mask = 0x80; mask; mask >>= 1) { *p++ = byte & mask ? 12 : 6; } } rfm12_prologue(); rfm12_trans(RFM12_CMD_PWRMGT | RFM12_PWRMGT_ET | RFM12_PWRMGT_ES | RFM12_PWRMGT_EX); for (uint8_t ii = cnt; ii > 0; ii--) { wdt_kick(); uint8_t rfm12_trigger_level = 0; for (uint8_t i = 0; i < 41; i++) { rfm12_ask_trigger(rfm12_trigger_level ^= 1, code[i] * delay); } rfm12_ask_trigger(0, 24 * delay); } rfm12_trans(RFM12_CMD_PWRMGT | RFM12_PWRMGT_EX); rfm12_epilogue(); }
static void rfm12_ask_intertechno_send_bit(const uint8_t bit) { rfm12_ask_trigger(1, INTERTECHNO_PERIOD); rfm12_ask_trigger(0, 3 * INTERTECHNO_PERIOD); if (bit) { rfm12_ask_trigger(1, 3 * INTERTECHNO_PERIOD); rfm12_ask_trigger(0, INTERTECHNO_PERIOD); } else { rfm12_ask_trigger(1, INTERTECHNO_PERIOD); rfm12_ask_trigger(0, 3 * INTERTECHNO_PERIOD); } }
static void rfm12_ask_intertechno_send_sync(void) { rfm12_ask_trigger(1, INTERTECHNO_PERIOD); rfm12_ask_trigger(0, 31 * INTERTECHNO_PERIOD); }