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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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; }
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); }
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); }
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); }
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); } }
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); }