Esempio n. 1
0
static int uirt2_send_mode2_raw(uirt2_t *dev, struct ir_remote *remote,
				lirc_t *buf, int length)
{
	byte_t tmp[64];
	int i, dest;
	int ir_length = 0;
	int res;
	int repeats = 1;

	LOGPRINTF(1, "uirt2_send_mode2_raw %d %p",
		  length, buf);

	tmp[0] = 0;
	tmp[1] = 0;

	for (i = 0, dest = 2; i < length; i++) {
		int val = buf[i] / UIRT2_UNIT;
		while(val > 0)
		{
			if(val > UCHAR_MAX)
			{
				tmp[dest++] = UCHAR_MAX - 1;
				tmp[dest++] = 1; /* 0 won't work */
				val -= UCHAR_MAX;
				length += 2;
			}
			else
			{
				tmp[dest++] = val;
				val = 0;
			}
			if (dest - 2 > 48) {
				logprintf(LOG_ERR, 
					  "uirt2_raw: too long RAW transmission %d > 48", dest - 2);
				return 0;
			}
		}
		ir_length += buf[i];
	}

	tmp[dest++] = uirt2_calc_freq(remote->freq) + (repeats & 0x1f);

	res = uirt2_send_raw(dev, tmp, dest);

	if (!res) {
		return 0;
	}

	LOGPRINTF(1, "uirt2_send_mode2_raw exit");
	return 1;
}
Esempio n. 2
0
static int uirt2_send_mode2_raw(uirt2_t *dev, struct ir_remote *remote,
				lirc_t *buf, int length)
{
	byte_t tmp[1024];
	int i;
	int ir_length = 0;
	int res;
	int repeats = 1;

	if (length > 48) {
		logprintf(LOG_ERR, 
			  "uirt2_raw: too long RAW transmission %d > 48", length);
		return 0;
	}


	LOGPRINTF(1, "uirt2_send_mode2_raw %d %p",
		  length, buf);

	tmp[0] = 0;
	tmp[1] = 0;

	for (i = 0; i < length; i++) {
		tmp[2 + i] = buf[i] / UIRT2_UNIT;
		ir_length += buf[i];
	}

	tmp[2 + length] = uirt2_calc_freq(remote->freq) + (repeats & 0x1f);

	res = uirt2_send_raw(dev, tmp, length + 3);

	if (!res) {
		return 0;
	}

	LOGPRINTF(1, "uirt2_send_mode2_raw exit");
	return 1;
}