Exemple #1
0
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;
	}
}
Exemple #2
0
ResTable_config AaptGroupEntry::toParams() const
{
    ResTable_config params;
    memset(&params, 0, sizeof(params));
    getMccName(mcc.string(), &params);
    getMncName(mnc.string(), &params);
    getLocaleName(locale.string(), &params);
    getOrientationName(orientation.string(), &params);
    getDensityName(density.string(), &params);
    getTouchscreenName(touchscreen.string(), &params);
    getKeysHiddenName(keysHidden.string(), &params);
    getKeyboardName(keyboard.string(), &params);
    getNavigationName(navigation.string(), &params);
    getScreenSizeName(screenSize.string(), &params);
    getVersionName(version.string(), &params);
    return params;
}
Exemple #3
0
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);
}
Exemple #4
0
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;
}
Exemple #5
0
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;
}
Exemple #6
0
/* 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;
    }
}