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;
}