您的位置:首页 > 其它

处理信号质量

2012-11-19 09:35 274 查看
/**
* Initialize everything that can be configured while we're still in
* AT+CFUN=0
*/
#define N_RMNET 25
static void initializeCallback(void *param)
{
We are using +XCIEV: indications instead of +CSQ and storing values for Android to pick up.
added by yanghanming 2012-11-06
*/
at_send_command("AT+XMER=1",NULL);
}


/**
* Called by atchannel when an unsolicited line appears
* This is called on atchannel's reader thread. AT commands may
* not be issued here
*/
static void onUnsolicited (const char *s, const char *sms_pdu)
{
/*
We are using +XCIEV: indications instead of +CSQ and storing values for Android to pick up.
added by yanghanming 2012-11-06
*/
} else if (strStartsWith(s,"+XCIEV:")) {
unsolicitedRSSI(s);
}
}


/*
added by yanghanming for unsolicitedRSSI.2012-11-06
*/
static int intelRSSITo3gpp(int intel_rssi)
{
switch(intel_rssi){
case 0: return(3); break;
case 1: return(7); break;
case 2: return(11); break;
case 3: return(15); break;
case 4: return(19); break;
case 5: return(23); break;
case 6: return(27); break;
case 7: return(31); break;
default: return 99;
}
}

/*
added by yanghanming for unsolicitedRSSI.2012-11-06
*/
static void unsolicitedRSSI(const char * s)
{
int err;
char * line = NULL;
RIL_SignalStrength_v6 responseStr;
memset (&responseStr, -1, sizeof (responseStr));
responseStr.GW_SignalStrength.signalStrength = 99;

line = strdup(s);
at_tok_start(&line);
err = at_tok_nextint(&line, &(at_csq_rssi));
if (err < 0) goto error;
responseStr.GW_SignalStrength.signalStrength = intelRSSITo3gpp(at_csq_rssi);
responseStr.GW_SignalStrength.bitErrorRate = at_csq_ber;

RIL_onUnsolicitedResponse(RIL_UNSOL_SIGNAL_STRENGTH, &responseStr, sizeof (responseStr));
return;

error:
/* The notification was for a battery event - do not send a msg to upper layers */
return;
}

/*
added by yanghanming for requestSignalStrength.2012-11-06
*/
static void requestSignalStrength(void *data, size_t datalen, RIL_Token t)
{
int err;
RIL_SignalStrength_v6 responseTemp;
memset (&responseTemp, -1, sizeof (responseTemp));
responseTemp.GW_SignalStrength.signalStrength = 99;

LOGD("Sending stored CSQ values to RIL");
responseTemp.GW_SignalStrength.signalStrength = intelRSSITo3gpp(at_csq_rssi);
responseTemp.GW_SignalStrength.bitErrorRate = at_csq_ber;
RIL_onRequestComplete(t, RIL_E_SUCCESS, &responseTemp, sizeof (responseTemp));
return;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: