void UploadData::initUrl(std::string &url) { std::string webUrl = "http://c4test2.51ias.com/api.php?m=Anony&a=accept_phonehelp_result&phonehelp_ver=%s&phonehelp_pid=%s&client_ver=%d&client_name=%s&client_pid=%s&account_id=%d&device_uuid=%s&logintoken=%s&start_time=%lld&continue_time=%lld&type=%d"; switch (mType) { case UploadData::START: { auto deviceData = DeviceData::getInstance(); url = StringUtils::format(webUrl.c_str(), deviceData->getVersionName().c_str(), deviceData->getChannelName().c_str(), deviceData->getGloudVersion(), deviceData->getGloudVersionName().c_str(), deviceData->getGloudChannel().c_str(), deviceData->getGloudAccountID(), deviceData->getGloudDeviceUUID().c_str(), deviceData->getGloudLoginToken().c_str(), 0LL, 0LL, 1); log("UploadData: 开始===> %s", url.c_str()); } break; case UploadData::END: { do { std::string jsStr = UserDefault::getInstance()->getStringForKey(JSON_VALUE, ""); rapidjson::Document doc; doc.Parse<0>(jsStr.c_str()); if (doc.HasParseError()) { log("UploadData: HasParseError parse json error! jsStr = %s", jsStr.c_str()); break; } if (doc.HasMember("helperVersionName") && doc.HasMember("gloudVersionName")) { //上传web的start_time就是endTime结束时间 DeviceData::getInstance()->setGloudVersionNameInteger(doc["gloudVersionNameInteger"].GetInt()); url = StringUtils::format(webUrl.c_str(), doc["helperVersionName"].GetString(), doc["helperChannel"].GetString(), doc["gloudVersion"].GetInt(), doc["gloudVersionName"].GetString(), doc["gloudChannel"].GetString(), doc["gloudAccountID"].GetInt(), doc["gloudDeviceUUID"].GetString(), doc["gloudLoginToken"].GetString(), doc["endTime"].GetInt64(), doc["durationTime"].GetInt64(), 2); log("UploadData: 结束或有缓存数据===> %s", url.c_str()); } } while (0); } break; default: break; } }
ResTable_config AaptGroupEntry::toParams() const { ResTable_config params; memset(¶ms, 0, sizeof(params)); getMccName(mcc.string(), ¶ms); getMncName(mnc.string(), ¶ms); getLocaleName(locale.string(), ¶ms); getOrientationName(orientation.string(), ¶ms); getDensityName(density.string(), ¶ms); getTouchscreenName(touchscreen.string(), ¶ms); getKeysHiddenName(keysHidden.string(), ¶ms); getKeyboardName(keyboard.string(), ¶ms); getNavigationName(navigation.string(), ¶ms); getScreenSizeName(screenSize.string(), ¶ms); getVersionName(version.string(), ¶ms); return params; }
void UploadData::save() { durationTime += DELAY_SCHEDULE; auto deviceData = DeviceData::getInstance(); std::string json = StringUtils::format("{\"helperVersionName\":\"%s\",\"helperChannel\":\"%s\",\"gloudVersion\":%d,\"gloudVersionName\":\"%s\",\"gloudVersionNameInteger\":%d,\"gloudChannel\":\"%s\",\"gloudAccountID\":%d,\"gloudDeviceUUID\":\"%s\",\"gloudLoginToken\":\"%s\",\"startTime\":%lld,\"endTime\":%lld,\"durationTime\":%lld}", deviceData->getVersionName().c_str(), deviceData->getChannelName().c_str(), deviceData->getGloudVersion(), deviceData->getGloudVersionName().c_str(), deviceData->getGloudVersionNameInteger(), deviceData->getGloudChannel().c_str(), deviceData->getGloudAccountID(), deviceData->getGloudDeviceUUID().c_str(), deviceData->getGloudLoginToken().c_str(), startTime, startTime + durationTime, durationTime); log("UploadData: save json ==> %s", json.c_str()); UserDefault::getInstance()->setStringForKey(JSON_VALUE, json); }
bool AaptGroupEntry::initFromDirName(const char* dir, String8* resType) { Vector<String8> parts; String8 mcc, mnc, loc, orient, den, touch, key, keysHidden, nav, size, vers; const char *p = dir; const char *q; while (NULL != (q = strchr(p, '-'))) { String8 val(p, q-p); val.toLower(); parts.add(val); //printf("part: %s\n", parts[parts.size()-1].string()); p = q+1; } String8 val(p); val.toLower(); parts.add(val); //printf("part: %s\n", parts[parts.size()-1].string()); const int N = parts.size(); int index = 0; String8 part = parts[index]; // resource type if (!isValidResourceType(part)) { return false; } *resType = part; index++; if (index == N) { goto success; } part = parts[index]; // imsi - mcc if (getMccName(part.string())) { mcc = part; index++; if (index == N) { goto success; } part = parts[index]; } else { //printf("not mcc: %s\n", part.string()); } // imsi - mnc if (getMncName(part.string())) { mnc = part; index++; if (index == N) { goto success; } part = parts[index]; } else { //printf("not mcc: %s\n", part.string()); } // locale - language if (part.length() == 2 && isalpha(part[0]) && isalpha(part[1])) { loc = part; index++; if (index == N) { goto success; } part = parts[index]; } else { //printf("not language: %s\n", part.string()); } // locale - region if (loc.length() > 0 && part.length() == 3 && part[0] == 'r' && part[0] && part[1]) { loc += "-"; part.toUpper(); loc += part.string() + 1; index++; if (index == N) { goto success; } part = parts[index]; } else { //printf("not region: %s\n", part.string()); } // orientation if (getOrientationName(part.string())) { orient = part; index++; if (index == N) { goto success; } part = parts[index]; } else { //printf("not orientation: %s\n", part.string()); } // density if (getDensityName(part.string())) { den = part; index++; if (index == N) { goto success; } part = parts[index]; } else { //printf("not density: %s\n", part.string()); } // touchscreen if (getTouchscreenName(part.string())) { touch = part; index++; if (index == N) { goto success; } part = parts[index]; } else { //printf("not touchscreen: %s\n", part.string()); } // keyboard hidden if (getKeysHiddenName(part.string())) { keysHidden = part; index++; if (index == N) { goto success; } part = parts[index]; } else { //printf("not keysHidden: %s\n", part.string()); } // keyboard if (getKeyboardName(part.string())) { key = part; index++; if (index == N) { goto success; } part = parts[index]; } else { //printf("not keyboard: %s\n", part.string()); } if (getNavigationName(part.string())) { nav = part; index++; if (index == N) { goto success; } part = parts[index]; } else { //printf("not navigation: %s\n", part.string()); } if (getScreenSizeName(part.string())) { size = part; index++; if (index == N) { goto success; } part = parts[index]; } else { //printf("not screen size: %s\n", part.string()); } if (getVersionName(part.string())) { vers = part; index++; if (index == N) { goto success; } part = parts[index]; } else { //printf("not version: %s\n", part.string()); } // if there are extra parts, it doesn't match return false; success: this->mcc = mcc; this->mnc = mnc; this->locale = loc; this->orientation = orient; this->density = den; this->touchscreen = touch; this->keysHidden = keysHidden; this->keyboard = key; this->navigation = nav; this->screenSize = size; this->version = vers; // what is this anyway? this->vendor = ""; return true; }
status_t AaptGroupEntry::parseNamePart(const String8& part, int* axis, uint32_t* value) { ResTable_config config; // IMSI - MCC if (getMccName(part.string(), &config)) { *axis = AXIS_MCC; *value = config.mcc; return 0; } // IMSI - MNC if (getMncName(part.string(), &config)) { *axis = AXIS_MNC; *value = config.mnc; return 0; } // locale - language if (part.length() == 2 && isalpha(part[0]) && isalpha(part[1])) { *axis = AXIS_LANGUAGE; *value = part[1] << 8 | part[0]; return 0; } // locale - language_REGION if (part.length() == 5 && isalpha(part[0]) && isalpha(part[1]) && part[2] == '_' && isalpha(part[3]) && isalpha(part[4])) { *axis = AXIS_LANGUAGE; *value = (part[4] << 24) | (part[3] << 16) | (part[1] << 8) | (part[0]); return 0; } // orientation if (getOrientationName(part.string(), &config)) { *axis = AXIS_ORIENTATION; *value = config.orientation; return 0; } // density if (getDensityName(part.string(), &config)) { *axis = AXIS_DENSITY; *value = config.density; return 0; } // touchscreen if (getTouchscreenName(part.string(), &config)) { *axis = AXIS_TOUCHSCREEN; *value = config.touchscreen; return 0; } // keyboard hidden if (getKeysHiddenName(part.string(), &config)) { *axis = AXIS_KEYSHIDDEN; *value = config.inputFlags; return 0; } // keyboard if (getKeyboardName(part.string(), &config)) { *axis = AXIS_KEYBOARD; *value = config.keyboard; return 0; } // navigation if (getNavigationName(part.string(), &config)) { *axis = AXIS_NAVIGATION; *value = config.navigation; return 0; } // screen size if (getScreenSizeName(part.string(), &config)) { *axis = AXIS_SCREENSIZE; *value = config.screenSize; return 0; } // version if (getVersionName(part.string(), &config)) { *axis = AXIS_VERSION; *value = config.version; return 0; } return 1; }
/* Plugin: Multithreaded loop. */ void InputPlugin::operator()() { try { /* ZMQ: Create framework subscription socket on this thread. */ zmq::socket_t zmq_framework_subscriber (*this->zmq_context.get(), ZMQ_SUB); /* ZMQ: Connect. */ zmq_framework_subscriber.connect("inproc://Framework"); /* ZMQ: Suscribe to all messages. */ zmq_framework_subscriber.setsockopt(ZMQ_SUBSCRIBE, "", 0); std::this_thread::sleep_for(std::chrono::milliseconds( 10 )); /* OIS: Initialization.*/ OIS::ParamList pl; std::ostringstream wnd; wnd << this->base_window.get()->native_window(); pl.insert(std::make_pair(std::string("WINDOW"), wnd.str())); pl.insert(std::make_pair(std::string("x11_mouse_grab"), std::string("false"))); pl.insert(std::make_pair(std::string("x11_mouse_hide"), std::string("false"))); pl.insert(std::make_pair(std::string("x11_keyboard_grab"), std::string("false"))); auto ois_manager = OIS::InputManager::createInputSystem(pl); /* OIS: Print debugging information. */ auto ois_info = std::string("-----OIS-----\n") + "Version: " + ois_manager->getVersionName() + "\n" + "Manager: " + ois_manager->inputSystemName() + "\n" + "Total keyboards: " + std::to_string(ois_manager->getNumberOfDevices(OIS::OISKeyboard)) + "\n" + "Total mice: " + std::to_string(ois_manager->getNumberOfDevices(OIS::OISMouse)) + "\n" + "Total gamepads: " + "-" + "\n" + "Total joysticks: " + std::to_string(ois_manager->getNumberOfDevices(OIS::OISJoyStick)); std::cout << ois_info << std::endl; /* OIS: Keyboard initialization. */ auto ois_keyboard = static_cast<OIS::Keyboard*>(ois_manager->createInputObject( OIS::OISKeyboard, false)); /* ZMQ: Send ready message. */ { zeug::string_hash message("Ready"); zmq::message_t zmq_message_send(message.Size()); memcpy(zmq_message_send.data(), message.Get(), message.Size()); this->zmq_input_publisher->send(zmq_message_send); } /* ZMQ: Listen for start message. */ for(;;) { zmq::message_t zmq_message; if (zmq_framework_subscriber.recv(&zmq_message, ZMQ_NOBLOCK)) { if (zeug::string_hash("Start") == zeug::string_hash(zmq_message.data())) { break; } } } /* Plugin: Loop. */ for(;;) { /* ZMQ: Listen for stop message. */ { zmq::message_t zmq_message; if (zmq_framework_subscriber.recv(&zmq_message, ZMQ_NOBLOCK)) { if (zeug::string_hash("Stop") == zeug::string_hash(zmq_message.data())) { break; } } } if (this->base_window->poll()) { /* OIS: Handle input */ ois_keyboard->capture(); if( ois_keyboard->isKeyDown( OIS::KC_ESCAPE )) { /* Topic */ { zeug::string_hash message("Keyboard"); zmq::message_t zmq_message(message.Size()); memcpy(zmq_message.data(), message.Get(), message.Size()); zmq_input_publisher->send(zmq_message, ZMQ_SNDMORE); } /* Message */ { zeug::string_hash message("Esc"); zmq::message_t zmq_message(message.Size()); memcpy(zmq_message.data(), message.Get(), message.Size()); zmq_input_publisher->send(zmq_message, ZMQ_SNDMORE); } /* End of message. */ { zeug::string_hash message("Finish"); zmq::message_t zmq_message(message.Size()); memcpy(zmq_message.data(), message.Get(), message.Size()); zmq_input_publisher->send(zmq_message); } } else if( ois_keyboard->isKeyDown( OIS::KC_RETURN )) { /* Topic */ { zeug::string_hash message("Keyboard"); zmq::message_t zmq_message(message.Size()); memcpy(zmq_message.data(), message.Get(), message.Size()); zmq_input_publisher->send(zmq_message, ZMQ_SNDMORE); } /* Message */ { zeug::string_hash message("Enter"); zmq::message_t zmq_message(message.Size()); memcpy(zmq_message.data(), message.Get(), message.Size()); zmq_input_publisher->send(zmq_message, ZMQ_SNDMORE); } /* End of message. */ { zeug::string_hash message("Finish"); zmq::message_t zmq_message(message.Size()); memcpy(zmq_message.data(), message.Get(), message.Size()); zmq_input_publisher->send(zmq_message); } } } } } /* Plugin: Catch plugin specific exceptions and rethrow them as runtime error*/ catch(const OIS::Exception& ois_exception ) { /* ZMQ: Send stop message. */ zeug::string_hash message("Stop"); zmq::message_t zmq_message_send(message.Size()); memcpy(zmq_message_send.data(), message.Get(), message.Size()); this->zmq_input_publisher->send(zmq_message_send); throw std::runtime_error(std::string(" OIS - ") + ois_exception.eText); return; } }