Esempio n. 1
0
void quassel_perm_hide(GIOChannel *h, int buffer) {
	char msg[2048];
	int size;

	size=0;
	bzero(msg, sizeof(msg));

	//QVariant<QList<QVariant>> of 5 elements
	size+=add_qvariant(msg+size, 9);
	size+=add_int(msg+size, 5);

	//QVariant<Int> = Sync
	size+=add_qvariant(msg+size, 2);
	size+=add_int(msg+size, 1);

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, "BufferViewConfig");

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, "0");

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, "requestRemoveBufferPermanently");

	size+=add_qvariant(msg+size, 127);
	size+=add_bytearray(msg+size, "BufferId");
	size+=add_int(msg+size, buffer);


	//The message will be of that length
	uint32_t v=htonl(size);
	write_io(h, (char*)&v, 4);
	write_io(h, msg, size);
}
Esempio n. 2
0
void quassel_mark_as_read(GIOChannel* h, int buffer_id) {
	char msg[2048];
	int size = 0;
	bzero(msg, sizeof(msg));

	//A list
	size += add_qvariant(msg+size, 9);
	//5 elements
	size += add_int(msg+size, 5);

	//A sync operation
	size += add_qvariant(msg+size, 2);
	size += add_int(msg+size, 1);

	//'BufferSyncer' bytearray
	size += add_qvariant(msg+size, 12);
	size += add_bytearray(msg+size, "BufferSyncer");

	//Empty string
	size += add_qvariant(msg+size, 10);
	size += add_int(msg+size, 0xffffffff);

	//'markBufferAsRead' bytearray
	size += add_qvariant(msg+size, 12);
	size += add_bytearray(msg+size, "requestMarkBufferAsRead");

	//BufferId type
	size += add_qvariant(msg+size, 127);
	size += add_bytearray(msg+size, "BufferId");
	size += add_int(msg+size, buffer_id);

	uint32_t v = htonl(size);
	write_io(h, (char*)&v, 4);
	write_io(h, msg, size);
}
Esempio n. 3
0
void initRequest(GIOChannel* h, char *val, char *arg) {
	char msg[2048];
	int size;
	
	size=0;
	bzero(msg, sizeof(msg));

	//QVariant<QList<QVariant>> of 3 elements
	size+=add_qvariant(msg+size, 9);
	size+=add_int(msg+size, 3);

	//QVariant<Int> = InitRequest
	size+=add_qvariant(msg+size, 2);
	size+=add_int(msg+size, 3);

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, val);

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, arg);

	//The message will be of that length
	uint32_t v=htonl(size);
	write_io(h, (char*)&v, 4);
	write_io(h, msg, size);
}
Esempio n. 4
0
void HeartbeatReply(GIOChannel* h) {
	//HeartBeat
	char msg[2048];
	int size;

	size=0;
	bzero(msg, sizeof(msg));

	//QVariant<QList<QVariant>> of 2 elements
	size+=add_qvariant(msg+size, 9);
	size+=add_int(msg+size, 2);

	//QVariant<Int> = HeartbeatReply
	size+=add_qvariant(msg+size, 2);
	size+=add_int(msg+size, 6);

	//QTime
	size+=add_qvariant(msg+size, 15);
	//I don't have any clue what time it is...
	size+=add_int(msg+size, 0);

	//The message will be of that length
	uint32_t v=htonl(size);
	write_io(h, (char*)&v, 4);
	write_io(h, msg, size);
}
Esempio n. 5
0
void send_message(GIOChannel*h, struct bufferinfo b, const char *message) {
	//HeartBeat
	char msg[2048];
	int size;

	size=0;
	bzero(msg, sizeof(msg));

	//QVariant<QList<QVariant>> of 4 elements
	size+=add_qvariant(msg+size, 9);
	size+=add_int(msg+size, 4);

	//QVariant<Int> = RPC
	size+=add_qvariant(msg+size, 2);
	size+=add_int(msg+size, 2);

	//QVariant<Bytearray> = "2sendInput(BufferInfo,QString)"
	size+=add_qvariant(msg+size, 12);
	size+=add_bytearray(msg+size, "2sendInput(BufferInfo,QString)");

	//QVariant<BufferInfo>
	size+=add_qvariant(msg+size, 127);
	size+=add_bytearray(msg+size, "BufferInfo");
	size+=add_bufferinfo(msg+size, b);

	//String
	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, message);

	//The message will be of that length
	uint32_t v=htonl(size);
	write_io(h, (char*)&v, 4);
	write_io(h, msg, size);
}
Esempio n. 6
0
void quassel_login(GIOChannel* h, char *user, char *pass) {
	//HeartBeat
	char msg[2048];
	int size;
	int elements;

	size=0;
	elements=0;
	bzero(msg, sizeof(msg));

	size+=add_string_in_map(msg+size, "MsgType", "ClientLogin");
	elements++;

	size+=add_string_in_map(msg+size, "User", user);
	elements++;

	size+=add_string_in_map(msg+size, "Password", pass);
	elements++;

	//The message will be of that length
	uint32_t v=htonl(size+4/*QMap type*/+1/*valid*/+4/*n elements*/);
	write_io(h, (char*)&v, 4);
	//This is a QMap
	v=htonl(8);
	write_io(h, (char*)&v, 4);
	
	//QMap is valid
	v=0;
	write_io(h, (char*)&v, 1);
	//The QMap has <elements> elements
	v=htonl(elements);
	write_io(h, (char*)&v, 4);
	write_io(h, msg, size);
}
Esempio n. 7
0
void quassel_request_backlog(GIOChannel *h, int buffer, int first, int last, int limit, int additional) {
	char msg[2048];
	int size;
	
	size=0;
	bzero(msg, sizeof(msg));

	//QVariant<QList<QVariant>> of 9 elements
	size+=add_qvariant(msg+size, 9);
	size+=add_int(msg+size, 9);

	//QVariant<Int> = Sync
	size+=add_qvariant(msg+size, 2);
	size+=add_int(msg+size, 1);

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, "BacklogManager");

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, "");

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, "requestBacklog");

	size+=add_qvariant(msg+size, 127);
	size+=add_bytearray(msg+size, "BufferId");
	size+=add_int(msg+size, buffer);

	size+=add_qvariant(msg+size, 127);
	size+=add_bytearray(msg+size, "MsgId");
	size+=add_int(msg+size, first);

	size+=add_qvariant(msg+size, 127);
	size+=add_bytearray(msg+size, "MsgId");
	size+=add_int(msg+size, last);

	size+=add_qvariant(msg+size, 2);
	size+=add_int(msg+size, limit);

	size+=add_qvariant(msg+size, 2);
	size+=add_int(msg+size, additional);


	//The message will be of that length
	uint32_t v=htonl(size);
	write_io(h, (char*)&v, 4);
	write_io(h, msg, size);
}
Esempio n. 8
0
void update_p1(void) {
	Byte p1 = read_io(HWREG_P1) | 0x0F;		// set all buttons as unpressed
	// a 0 bit represents a button being pressed.
	// the following code unsets appropriate bits.
	if ((p1 & 0x10) == 0) {			// p14 (direction buttons)
		if (is_pressed[BUTTON_RIGHT])
			p1 &= ~0x01;
		if (is_pressed[BUTTON_LEFT])
			p1 &= ~0x02;
		if (is_pressed[BUTTON_UP])
			p1 &= ~0x04;
		if (is_pressed[BUTTON_DOWN])
			p1 &= ~0x08;
	}
	if ((p1 & 0x20) == 0) {			// p15 (other buttons)
		if (is_pressed[BUTTON_A])
			p1 &= ~0x01;
		if (is_pressed[BUTTON_B])
			p1 &= ~0x02;
		if (is_pressed[BUTTON_SELECT])
			p1 &= ~0x04;
		if (is_pressed[BUTTON_START])
			p1 &= ~0x08;
	}
	write_io(HWREG_P1, p1);
}
Esempio n. 9
0
int quassel_negotiate(GIOChannel* h, int ssl) {
	uint32_t magic = 0x42b33f00;

	magic |= !!ssl; //SSL
	magic |= 2; //Compression
	
	magic = htonl(magic);
	write_io(h, (char*)&magic, sizeof(magic));

	//Send supported protocols
	{
		//Legacy protocol
		uint32_t v = 1;
		v = htonl(v);
		write_io(h, (char*)&v, sizeof(v));

		//End of list
		v = 1 << 31;
		v = htonl(v);
		write_io(h, (char*)&v, sizeof(v));
	}

	//Read answer
	uint32_t response;
	while(!read_io(h, (char*)&response, sizeof(response)));
	response = ntohl(response);

	//No support for legacy protocol
	if( (response&0xff)!= 1)
		return 0;

	if( (response>>24) & 1) {
		//switch to ssl
		fprintf(stderr, "Core asks for ssl\n");
	}

	if( (response>>24) & 2) {
		//switch and compression
		fprintf(stderr, "Core asks for compression\n");
		extern int useCompression;
		useCompression = 1;
	}
	return 1;
}
Esempio n. 10
0
void quassel_set_last_seen_msg(GIOChannel* h, int buffer_id, int msg_id) {
	char msg[2048];
	int size = 0;
	bzero(msg, sizeof(msg));

	//A list
	size += add_qvariant(msg+size, 9);
	//5 elements
	size += add_int(msg+size, 6);

	//A sync operation
	size += add_qvariant(msg+size, 2);
	size += add_int(msg+size, 1);

	//'BufferSyncer' bytearray
	size += add_qvariant(msg+size, 12);
	size += add_bytearray(msg+size, "BufferSyncer");

	//Empty string
	size += add_qvariant(msg+size, 10);
	size += add_int(msg+size, 0xffffffff);

	size += add_qvariant(msg+size, 12);
	size += add_bytearray(msg+size, "requestSetLastSeenMsg");

	//BufferId type
	size += add_qvariant(msg+size, 127);
	size += add_bytearray(msg+size, "BufferId");
	size += add_int(msg+size, buffer_id);

	//MsgId type
	size += add_qvariant(msg+size, 127);
	size += add_bytearray(msg+size, "MsgId");
	size += add_int(msg+size, msg_id);

	uint32_t v = htonl(size);
	write_io(h, (char*)&v, 4);
	write_io(h, msg, size);
}
Esempio n. 11
0
void quassel_init_packet(GIOChannel* h, int ssl) {
	int size=0;
	int elements=0;
	char msg[2048];

	size+=add_bool_in_map(msg+size, "UseSsl", !!ssl);
	elements++;

	size+=add_bool_in_map(msg+size, "UseCompression", 0);
	elements++;

	size+=add_int_in_map(msg+size, "ProtocolVersion", 10);
	elements++;

	size+=add_string_in_map(msg+size, "MsgType", "ClientInit");
	elements++;

	size+=add_string_in_map(msg+size, "ClientVersion", "v0.6.1 (Quassel-IRSSI)");
	elements++;

	size+=add_string_in_map(msg+size, "ClientDate", "Oct 23 2011 18:00:00");
	elements++;

	//The message will be of that length
	unsigned int v=htonl(size+4/*QMap type*/+1/*valid*/+4/*n elements*/);
	write_io(h, (char*)&v, 4);
	//This is a QMap
	v=htonl(8);
	write_io(h, (char*)&v, 4);
	
	//QMap is valid
	v=0;
	write_io(h, (char*)&v, 1);
	//The QMap has <elements> elements
	v=htonl(elements);
	write_io(h, (char*)&v, 4);
	write_io(h, msg, size);
}
Esempio n. 12
0
void mem_write8(const uint16_t address, const uint8_t value, Gameboy* const gb)
{
	if (address >= 0xFF80)
		write_hram(address, value, gb);
	else if (address >= 0xFF00)
		write_io(address, value, gb);
	else if (address >= 0xFE00)
		write_oam(address, value, &gb->memory);
	else if (address >= 0xC000)
		write_wram(address, value, &gb->memory);
	else if (address >= 0xA000)
		write_cart_ram(address, value, &gb->cart);
	else if (address >= 0x8000)
		write_vram(address, value, &gb->memory);
	else
		write_cart(address, value, &gb->cart);
}
Esempio n. 13
0
void abc1600_state::write_user_memory(offs_t offset, UINT8 data)
{
	int segment = (offset >> 15) & 0x1f;
	int page = (offset >> 11) & 0x0f;
	UINT16 page_data = PAGE_DATA(segment, page);

	offs_t virtual_offset = ((page_data & 0x3ff) << 11) | (offset & 0x7ff);

	if (!PAGE_WP) return;
	//if (PAGE_NONX) BUS ERROR

	if (virtual_offset < 0x1fe000)
	{
		write_ram(virtual_offset, data);
	}
	else
	{
		write_io(virtual_offset, data);
	}
}
Esempio n. 14
0
inline void abc1600_state::dma_iorq_w(int index, UINT16 offset, UINT8 data)
{
	offs_t virtual_offset = get_dma_address(index, offset);

	write_io(virtual_offset, data);
}