WORD GSM_SendDataToHttp(WORD aSender, WORD aReceiver, WORD aCommand, WORD aDataLength, BYTE *aData)
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; }