static int8_t on_post_keys_response(int8_t cid, uint16_t status_code, GSwifi::GSREQUESTSTATE state) { HTTPLOG_PRINT(P("< P /k ")); HTTPLOG_PRINTLN(status_code); if (status_code != 200) { gs.bufferClear(); } if (state != GSwifi::GSREQUESTSTATE_RECEIVED) { return 0; } gs.writeHead( post_keys_cid, status_code ); switch (status_code) { case 200: while (! gs.bufferEmpty()) { char letter = gs.bufferGet(); gs.write( letter ); } gs.writeEnd(); break; default: gs.writeEnd(); break; } ring_put( &commands, COMMAND_CLOSE ); ring_put( &commands, cid ); ring_put( &commands, COMMAND_CLOSE ); if (ring_isfull( &commands )) { HTTPLOG_PRINTLN("!E8"); return -1; } ring_put( &commands, post_keys_cid ); return 0; }
static int8_t on_get_messages_request(int8_t cid, GSwifi::GSREQUESTSTATE state) { if (state != GSwifi::GSREQUESTSTATE_RECEIVED) { return -1; } gs.writeHead(cid, 200); if ( (IrCtrl.len <= 0) || (IrCtrl.state != IR_RECVED_IDLE) ) { // if no data gs.writeEnd(); ring_put( &commands, COMMAND_CLOSE ); ring_put( &commands, cid ); return 0; } IR_state( IR_READING ); gs.write("{\"format\":\"raw\",\"freq\":"); // format fixed to "raw" for now gs.write(IrCtrl.freq); gs.write(",\"data\":["); for (uint16_t i=0; i<IrCtrl.len; i++) { gs.write( IR_get() ); if (i != IrCtrl.len - 1) { gs.write(","); } } gs.write("]}"); gs.writeEnd(); ring_put( &commands, COMMAND_CLOSE ); ring_put( &commands, cid ); IR_state( IR_IDLE ); #ifdef USE_INTERNET TIMER_START( suspend_polling_timer, SUSPEND_GET_MESSAGES_INTERVAL ); #endif return 0; }