static BOOL RELAYER_write(
    int  fd,
    unsigned char *peer_buf, 
    int  peer_len)
{

    if (peer_buf == NULL){
        ERR("NULL write buffer\n");
        return FALSE;
    }
    
    if ((peer_buf[0] != 0x04) && (peer_buf[0] != 0x02) && (peer_buf[0] != 0x03)){
        ERR("Invalid packet type 0x%02x to PC\n", peer_buf[0]);
        return FALSE;    
    }
    
    if (write_data_to_pc(fd, peer_buf, peer_len) < 0){
        return FALSE;
    }
    
    return TRUE;
}
示例#2
0
static void *wifi_update_thread_test(void *priv)
{
    struct wifi_factory *wififm = (struct wifi_factory *)priv;
    struct textview *tv;
    struct itemview *iv;
    int i = 0;
    iv = wififm->iv;
    char wifi_result[32] = {0};

    int curStatus = -1; //disconnect

    if( FM_WIFI_init(wififm->info, sizeof(wififm->info), &wififm->result) < 0) {
        LOGE("[WIFI] FM_WIFI_init failed!\n");
        sprintf(wififm->info, "%s : %s\n", uistr_info_wifi_status, uistr_info_wifi_init_fail);
        iv->redraw(iv);
        sprintf(wifi_result, "%d:%s", wififm->mod->id, result[FTM_TEST_FAIL]);
        LOGD(TAG "WIFI result:%s", wifi_result);
        write_data_to_pc(wifi_result, strlen(wifi_result));
        return NULL;
    }

    while(i++ < 3) {
        //1. disconnect the connection.
        wifi_disconnect();

        //2. connect to the AP.
        if(wifi_fm_test() > 0) {
            LOGD("[WIFI][wifi_update_thread_test] wifi_fm_test failed!\n");
        } else {
            int count =10;
            iv->redraw(iv);
            while(count-- >0) {
                /*                    if (wififm->exit_thd || wififm->renew)
                                    break;   */
                if(wifi_update_status() < 0) {
                    if(count)
                        usleep(100000);
                    else {
                        memset(wififm->info,0, sizeof(wififm->info));
                        sprintf(wififm->info, "%s : %s\n", uistr_info_wifi_status, uistr_info_wifi_timeout);
                    }
                } else {
                    curStatus = 1;  //connected
                    //show the message
                }
                iv->redraw(iv);
            }
        }

        //3. check the status
        if(curStatus == 1) {
            wififm->mod->test_result = FTM_TEST_PASS;
            LOGD(TAG "while %d connected\n", i);
            break;
        }
    }

    if(3 == i) {
        wififm->mod->test_result = FTM_TEST_FAIL;
        LOGD(TAG "while i == 3\n", i);
    }

    FM_WIFI_deinit();
    LOGD(TAG "wififm->mod->id:%d; wififm->mod->test_result:%d", wififm->mod->id, wififm->mod->test_result);
    //if(get_is_ata())
    {
        sprintf(wifi_result, "%d:%s", wififm->mod->id, result[wififm->mod->test_result]);
        LOGD(TAG "WIFI result:%s", wifi_result);
        write_data_to_pc(wifi_result, strlen(wifi_result));
    }

    return NULL;
}