void loax_server_buttonup(loax_server_t* self, int id, int keycode, double utime) { assert(self); LOGD("debug id=%i, keycode=0x%X, utime=%lf", id, keycode, utime); int type = LOAX_EVENT_BUTTONUP; net_socket_sendall(self->socket_event, (const void*) &type, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &utime, sizeof(double)); net_socket_sendall(self->socket_event, (const void*) &keycode, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &id, sizeof(int)); net_socket_flush(self->socket_event); }
void loax_server_keyup(loax_server_t* self, int keycode, int meta, double utime) { assert(self); LOGD("debug keycode=0x%X, meta=0x%X, utime=%lf", keycode, meta, utime); int type = LOAX_EVENT_KEYUP; net_socket_sendall(self->socket_event, (const void*) &type, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &utime, sizeof(double)); net_socket_sendall(self->socket_event, (const void*) &keycode, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &meta, sizeof(int)); net_socket_flush(self->socket_event); }
void loax_server_touch(loax_server_t* self, int action, int count, float* coord, double utime) { assert(self); assert(coord); LOGD("debug action=%i, count=%i, x0=%0.1f, y0=%0.1f, x1=%0.1f, y1=%0.1f, utime=%lf", action, count, coord[0], coord[1], coord[2], coord[3], utime); int type; if(action == LOAX_ANDROID_MOTION_ACTION_DOWN) { type = LOAX_EVENT_TOUCHDOWN; } else if(action == LOAX_ANDROID_MOTION_ACTION_UP) { type = LOAX_EVENT_TOUCHUP; } else if(action == LOAX_ANDROID_MOTION_ACTION_MOVE) { type = LOAX_EVENT_TOUCHMOVE; } else { // ignore depreciated actions return; } if(count < 1) { LOGW("invalid count=%i", count); return; } if(count > LOAX_EVENT_TOUCHMAX) { // silently clamp to the max touch events count = LOAX_EVENT_TOUCHMAX; } net_socket_sendall(self->socket_event, (const void*) &type, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &utime, sizeof(double)); net_socket_sendall(self->socket_event, (const void*) &count, sizeof(int)); int i; for(i = 0; i < count; ++i) { net_socket_sendall(self->socket_event, (const void*) &coord[2*i], sizeof(float)); net_socket_sendall(self->socket_event, (const void*) &coord[2*i + 1], sizeof(float)); } net_socket_flush(self->socket_event); }
void loax_server_axismove(loax_server_t* self, int id, int axis, float value, double utime) { assert(self); LOGD("debug id=%i, axis=0x%X, value=%f, utime=%lf", id, axis, value, utime); int type = LOAX_EVENT_AXISMOVE; net_socket_sendall(self->socket_event, (const void*) &type, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &utime, sizeof(double)); net_socket_sendall(self->socket_event, (const void*) &id, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &axis, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &value, sizeof(float)); net_socket_flush(self->socket_event); }
void loax_server_gyroscope(loax_server_t* self, float ax, float ay, float az, double utime) { assert(self); LOGD("debug ax=%f, ay=%f, az=%f, utime=%lf", ax, ay, az, utime); int type = LOAX_EVENT_GYROSCOPE; net_socket_sendall(self->socket_event, (const void*) &type, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &utime, sizeof(double)); net_socket_sendall(self->socket_event, (const void*) &ax, sizeof(float)); net_socket_sendall(self->socket_event, (const void*) &ay, sizeof(float)); net_socket_sendall(self->socket_event, (const void*) &az, sizeof(float)); net_socket_flush(self->socket_event); }
void loax_server_magnetometer(loax_server_t* self, float mx, float my, float mz, double utime) { assert(self); LOGD("debug mx=%f, my=%f, mz=%f, utime=%lf", mx, my, mz, utime); int type = LOAX_EVENT_MAGNETOMETER; net_socket_sendall(self->socket_event, (const void*) &type, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &utime, sizeof(double)); net_socket_sendall(self->socket_event, (const void*) &mx, sizeof(float)); net_socket_sendall(self->socket_event, (const void*) &my, sizeof(float)); net_socket_sendall(self->socket_event, (const void*) &mz, sizeof(float)); net_socket_flush(self->socket_event); }
void loax_server_resize(loax_server_t* self, int w, int h) { assert(self); LOGI("%ix%i", w, h); self->w = w; self->h = h; int type = LOAX_EVENT_RESIZE; double utime = a3d_utime(); net_socket_sendall(self->socket_event, (const void*) &type, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &utime, sizeof(double)); net_socket_sendall(self->socket_event, (const void*) &w, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &h, sizeof(int)); net_socket_flush(self->socket_event); }
void loax_server_keydown(loax_server_t* self, int keycode, int meta, double utime) { assert(self); LOGD("debug keycode=0x%X, meta=0x%X, utime=%lf", keycode, meta, utime); // if shift/caps is pressed change the keycode keycode = loax_server_shiftkeycode(keycode, meta); int type = LOAX_EVENT_KEYDOWN; net_socket_sendall(self->socket_event, (const void*) &type, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &utime, sizeof(double)); net_socket_sendall(self->socket_event, (const void*) &keycode, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &meta, sizeof(int)); net_socket_flush(self->socket_event); }
int loax_server_draw(loax_server_t* self) { int cmd; int recvd; while(net_socket_recvall(self->socket_render, (void*) &cmd, sizeof(int), &recvd) > 0) { if((cmd >= 0) && (cmd < LOAX_GL_MAX)) { loax_gl_map[cmd](); if(cmd == LOAX_SwapBuffers) { int one = 1; net_socket_sendall(self->socket_render, (void*) &one, sizeof(int)); return 1; } else if(cmd == LOAX_Size) { net_socket_sendall(self->socket_render, (void*) &self->w, sizeof(int)); net_socket_sendall(self->socket_render, (void*) &self->h, sizeof(int)); } } else if((cmd >= 0x10000) && (cmd < LOAX_CMD_MAX)) { cmd &= 0xFFFF; loax_cmd_map[cmd](); } else { LOGE("invalid cmd=%i", cmd); break; } } return 0; }
void loax_server_gps(loax_server_t* self, double lat, double lon, float accuracy, float altitude, float speed, float bearing, double utime) { assert(self); LOGD("debug lat=%lf, lon=%lf", lat, lon); LOGD("debug accuracy=%f, altitude=%f, speed=%f, bearing=%f, utime=%lf", accuracy, altitude, speed, bearing, utime); int type = LOAX_EVENT_GPS; net_socket_sendall(self->socket_event, (const void*) &type, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &utime, sizeof(double)); net_socket_sendall(self->socket_event, (const void*) &lat, sizeof(double)); net_socket_sendall(self->socket_event, (const void*) &lon, sizeof(double)); net_socket_sendall(self->socket_event, (const void*) &accuracy, sizeof(float)); net_socket_sendall(self->socket_event, (const void*) &altitude, sizeof(float)); net_socket_sendall(self->socket_event, (const void*) &speed, sizeof(float)); net_socket_sendall(self->socket_event, (const void*) &bearing, sizeof(float)); net_socket_flush(self->socket_event); }
void loax_server_accelerometer(loax_server_t* self, float ax, float ay, float az, int rotation, double utime) { assert(self); LOGD("debug ax=%f, ay=%f, az=%f", ax, ay, az); LOGD("debug rotation=%i, utime=%lf", rotation, utime); int type = LOAX_EVENT_ACCELEROMETER; net_socket_sendall(self->socket_event, (const void*) &type, sizeof(int)); net_socket_sendall(self->socket_event, (const void*) &utime, sizeof(double)); net_socket_sendall(self->socket_event, (const void*) &ax, sizeof(float)); net_socket_sendall(self->socket_event, (const void*) &ay, sizeof(float)); net_socket_sendall(self->socket_event, (const void*) &az, sizeof(float)); net_socket_sendall(self->socket_event, (const void*) &rotation, sizeof(int)); net_socket_flush(self->socket_event); }