void write_array_to_reg_12(int shift_array[12]){ int i; for (i=0; i<12;i++){ //registers[i] = set_data_bit(shift_array[i]); } }
void write_array_to_reg(int shift_array[16]){ int i; for (i=0; i<16;i++){ //registers[i] = set_data_bit(shift_array[i]); } shift_all_bits(); }
void write_number_to_reg_16(int num){ int i; for (i=0; i<16;i++){ //registers[i] = set_data_bit(num & (1 << (16 - 1 - i))); } shift_all_bits(); }
void write_number_to_reg_8(int num){ pin_set(port, store, 0); int i ; for (i=0; i<8;i++){ set_data_bit(num & (1 << (8 - 1 - i))); } shift_all_bits(); }
static int uirt2_send_mode2_struct1(uirt2_t * dev, struct ir_remote *remote, lirc_t * buf, int length) { const int TABLE_LEN = 2; remstruct1_data_t rem; int res; int table[2][TABLE_LEN]; int bits = 0; int i, j; int tUnit; int freq; int bFrequency; int version; int repeats = 1; memset(&rem, 0, sizeof(rem)); memset(table[0], 0, sizeof(table[0])); memset(table[1], 0, sizeof(table[1])); res = uirt2_getversion(dev, &version); if (res < 0) { return res; } logprintf(LOG_INFO, "uirt2_raw: UIRT version %04x", version); freq = remote->freq; if (freq == 0) freq = DEFAULT_FREQ; if (version >= 0x0905) { if (((5000000 / freq) + 1) / 2 >= 0x80) { bFrequency = 0x80; } else { bFrequency = ((5000000 / freq) + 1) / 2; } tUnit = (bFrequency * 100) / 125; } else { tUnit = UIRT2_UNIT; } for (i = 0; i < length; i++) { int bit; int len = buf[i] / tUnit; if (len > UCHAR_MAX) { LOGPRINTF(0, "signal too long for transmission %lu", (__u32) buf[i]); return 0; } if (i == 0) { rem.bHdr1 = len; continue; } else if (i == 1) { rem.bHdr0 = len; continue; } bit = calc_data_bit(remote, table[i % 2], TABLE_LEN, buf[i], tUnit); if (bit < 0) { int part_length = i + 1; /* is this a repeated signal sequence? */ if (!(i % 2 /* space */ && buf[i] == remote->min_remaining_gap)) { return 0; } if ((length + 1) % part_length != 0) { return 0; } repeats = (length + 1) / part_length; for (j = 1; j < repeats; j++) { if (memcmp (&buf[0], &buf[j * part_length], (j + 1 == repeats ? part_length - 1 : part_length) * sizeof(*buf)) != 0) { return 0; } } break; } if (i - 2 > UIRT2_MAX_BITS) { logprintf(LOG_ERR, "uirt2_raw: UIRT tried to send %d bits, max is %d", length - 2, UIRT2_MAX_BITS); return 0; } set_data_bit(rem.bDatBits, i - 2, bit); bits++; } LOGPRINTF(2, "bits %d", bits); rem.bISDlyHi = remote->min_remaining_gap / tUnit / 256; rem.bISDlyLo = (remote->min_remaining_gap / tUnit) & 255; rem.bBits = bits; rem.bOff0 = table[1][0]; rem.bOff1 = table[1][1]; rem.bOn0 = table[0][0]; rem.bOn1 = table[0][1]; res = uirt2_send_struct1(dev, freq, repeats, &rem); return res; }