WORD GSM_SendDataToHttp(WORD aSender, WORD aReceiver, WORD aCommand, WORD aDataLength, BYTE *aData)
{
WORD wTemp;
WORD_VAL wvTemp, wvTemp2;
WORD write_index;
WORD k,i, j;
float f;
double d;
LONG_VAL lvTemp, lvTemp2;
GprsTxBuffControll.Read = Gprs.IndexReadTx;
GprsTxBuffControll.Write = Gprs.IndexWriteTx;
if(CYCLIC_BUFFER_GetFreeSpace( &GprsTxBuffControll, MAX_GPRS_BUFFER ) < (aDataLength + 8)){
//není dostatek místa ve vysílacím bufferu, ukončení funkce
return FALSE;
}
write_index = GprsTxBuffControll.Write;
strcpy(Gsm.CommandData, "***");
strcat(Gsm.CommandData, TableAddressGPRS_HTTP[1].DNS);
strcat(Gsm.CommandData, TableAddressGPRS_HTTP[1].Path);
strcat(Gsm.CommandData, "/");
VERSION_GetNAME(bTemp);
strcat(Gsm.CommandData, bTemp);
strcat(Gsm.CommandData, "/?");
strcat(Gsm.CommandData, "udn=");
VERSION_GetUDN(bTemp, aSender);
#if defined(BEEHIVE)
if(WEIGHT_NumberActive == 1 && (strstr(bTemp, ".1E.") != NULL || strstr(bTemp, ".1F.")) != NULL) return ERR_OK;
else if(WEIGHT_NumberActive == 2 && strstr(bTemp, ".1F.") != NULL) return ERR_OK;
#endif
strcat(Gsm.CommandData, bTemp);
strcat(Gsm.CommandData, "&sender=");
#if defined(BEEHIVE)
if(aCommand == AE_ACCELEROMETER_ACTIVE) aSender = (WORD)aData[0];
else if(aCommand == AE_ELECTRIC_CONTACT_ON) aSender = (WORD)aData[0];
else if(aCommand == AE_ELECTRIC_CONTACT_OFF) aSender = (WORD)aData[0];
else if(aCommand == AE_SENSOR_OVER) aSender = (WORD)aData[aDataLength - 1];
else if(aCommand == AE_SENSOR_UNDER) aSender = (WORD)aData[aDataLength - 1];
else if(aCommand == AE_BATTERY_OVER) aSender = (WORD)aData[aDataLength - 1];
else if(aCommand == AE_BATTERY_UNDER) aSender = (WORD)aData[aDataLength - 1];
else if(aCommand == AE_WEIGHT_OVER) aSender = (WORD)aData[aDataLength - 1];
else if(aCommand == AE_WEIGHT_UNDER) aSender = (WORD)aData[aDataLength - 1];
#endif
ui_to_a(aSender, bTemp);
strcat(Gsm.CommandData, bTemp);
strcat(Gsm.CommandData, "&receiver=");
ui_to_a(aReceiver, bTemp);
strcat(Gsm.CommandData, bTemp);
if(aCommand & ANSWER_FLAG) strcat(Gsm.CommandData, "&answer=");
else if(aCommand & EVENT_FLAG) strcat(Gsm.CommandData, "&event=");
else strcat(Gsm.CommandData, "&command=");
wTemp = aCommand & 0x0fff;
ui_to_a(wTemp, bTemp);
strcat(Gsm.CommandData, bTemp);
if(aCommand & ERROR_FLAG){
wvTemp2.byte.HB = aData[9];
wvTemp2.byte.LB = aData[10];
strcat(Gsm.CommandData, "&error=");
ui_to_a(wvTemp2.Val, bTemp);
strcat(Gsm.CommandData, bTemp);
}
wTemp = 0;
wvTemp.Val = 0;
switch(aCommand){
case BA_GET_DESCRIPTION:
for(i=0; i < aDataLength; i++){
if(aData[i] == '|') aData[i] = 0;
}
aData[i] = 0;
strcat(Gsm.CommandData, "&dev_type=");
strcat(Gsm.CommandData, aData);
k = strlen(aData) + 1;
strcat(Gsm.CommandData, "&name=");
strcat(Gsm.CommandData, aData + k);
k += strlen(aData + k) + 1;
strcat(Gsm.CommandData, "&fnc=");
strcat(Gsm.CommandData, aData + k);
k += strlen(aData + k) + 1;
strcat(Gsm.CommandData, "&sn=");
strcat(Gsm.CommandData, aData + k);
k += strlen(aData + k) + 1; k += strlen(aData + k) + 1;
strcat(Gsm.CommandData, "&boot_n=");
strcat(Gsm.CommandData, aData + k);
k += strlen(aData + k) + 1;
strcat(Gsm.CommandData, "&boot_v=");
strcat(Gsm.CommandData, aData + k);
k += strlen(aData + k) + 1;
strcat(Gsm.CommandData, "&image_n=");
strcat(Gsm.CommandData, aData + k);
k += strlen(aData + k) + 1;
wTemp = strlen(Gsm.CommandData);
CYCLIC_BUFFER_Write( Gsm.CommandData, wTemp, &GprsTxBuffControll, Gprs.TxBuff, MAX_GPRS_BUFFER );
wvTemp.Val += wTemp;
strcpy(Gsm.CommandData, "&image_v=");
strcat(Gsm.CommandData, aData + k);
k += strlen(aData + k) + 1;
strcat(Gsm.CommandData, "&date=");
strcat(Gsm.CommandData, aData + k);
k += strlen(aData + k) + 1;
strcat(Gsm.CommandData, "&web=");
strcat(Gsm.CommandData, aData + k);
k += strlen(aData + k) + 1;
strcat(Gsm.CommandData, "&core=");
strcat(Gsm.CommandData, aData + k);
k += strlen(aData + k) + 1;
strcat(Gsm.CommandData, "&bat=");
strcat(Gsm.CommandData, aData + k);
break;
default:
wTemp = strlen(Gsm.CommandData);
CYCLIC_BUFFER_Write( Gsm.CommandData, wTemp, &GprsTxBuffControll, Gprs.TxBuff, MAX_GPRS_BUFFER );
wvTemp.Val += wTemp;
Gsm.CommandData[0] = 0;
wvTemp.Val += GSM_CreateHttpAnswer(aCommand, aData, aDataLength);
break;
}
wTemp = strlen(Gsm.CommandData);
wTemp++;
wvTemp.Val += wTemp;
CYCLIC_BUFFER_Write( Gsm.CommandData, wTemp, &GprsTxBuffControll, Gprs.TxBuff, MAX_GPRS_BUFFER );
Gprs.TxBuff[write_index++] = MESSAGE_TYPE_HTTP;
if( write_index >= MAX_GPRS_BUFFER) write_index = 0;
Gprs.TxBuff[write_index++] = wvTemp.byte.HB;
if( write_index >= MAX_GPRS_BUFFER) write_index = 0;
Gprs.TxBuff[write_index] = wvTemp.byte.LB;
Gprs.IndexReadTx = GprsTxBuffControll.Read;
Gprs.IndexWriteTx = GprsTxBuffControll.Write;
ModemGsm.Semaphore.Control.SendHttp = TRUE;
return ERR_OK;
}