コード例 #1
0
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]);
	}		
}
コード例 #2
0
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();
}
コード例 #3
0
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();
}
コード例 #4
0
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();
}
コード例 #5
0
ファイル: hw_uirt2_raw.c プロジェクト: TryndamereStark/lirc
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;
}