Good afternoon.
This example is taken from “AirPrime___Open_AT_Tutorial___Rev1.0.pdf”
/*Identifer for the bearer*/
wip_bearer_t Br_Id;
/* Channel identifier */
wip_channel_t Channel; /*Channel for the Server*/
wip_channel_t Client_Channel; /*Channel ID for the Client spawned*/
/*Control Handler for the Client socket spawned*/
void TCP_Handler(wip_event_t *Event,void *ctx)
{
u32 Read;
[b]ascii *Data_Buffer;[/b]
u32 Write;
TRACE (( 1, "Inside TCP_Handler"));
Client_Channel = Event->channel;
switch(Event->kind)
{
case WIP_CEV_READ:
[b]Data_Buffer = adl_memGet((Event->content.read.readable+1));[/b]
wm_memset(Data_Buffer,0x00,Event->content.read.readable);
TRACE (( 1, "Inside WIP_CEV_READ"));
/*Read the data send by the remote party */
Read = wip_read(Client_Channel,Data_Buffer, Event->content.read.readable);
TRACE (( 1, "Data recevied: %d",Read));
*(Data_Buffer+Read) ='\0';
if(Read>0)
{
/*Send the data read to the external application*/
adl_atSendResponsePort(ADL_AT_UNS, ADL_PORT_UART1,Data_Buffer);
adl_atSendResponsePort(ADL_AT_UNS, ADL_PORT_UART1,"\r\n");
}
[b]_adl_memRelease(&Data_Buffer);[/b]
break;
case WIP_CEV_WRITE:
TRACE (( 1, "Inside WIP_CEV_WRITE"));
break;
case WIP_CEV_OPEN:
TRACE (( 1, "Inside WIP_CEV_OPEN"));
/*Client is conneted to the server, send the test data*/
Write = wip_write(Client_Channel,"This is a test data",19);
break;
case WIP_CEV_PEER_CLOSE:
TRACE (( 1, "Inside WIP_CEV_PEER_CLOSE"));
break;
}
}
Data_Buffer = adl_memGet((Event->content.read.readable+1)); - memory for the buffer is allocated is dynamically.
I want to implement is the same thing.
вот мой код
static void editPort ( wip_event_t *ev, void *ctx )
{
//adl_fcmFlow_e e;
u32 Read;
u8 *DataRead[16];
ascii DataWrite[50];
TRACE ((1,"Client %d event",ev->channel));
switch (ev->kind)
{
case WIP_CEV_DONE:
TRACE ( ( ERROR_TRACE_LEVEL, "WIP_CEV_DONE" ) );
break;
case WIP_CEV_ERROR:
TRACE ( ( ERROR_TRACE_LEVEL, "WIP_CEV_ERROR" ) );
break;
case WIP_CEV_OPEN:
TRACE ( ( ERROR_TRACE_LEVEL, "WIP_CEV_OPEN" ) );
// adl_fcmSwitchV24State (UARTHandle, ADL_FCM_V24_STATE_DATA);
wm_sprintf(DataWrite,"HELLO %d", (int)ev->channel);
//DataWrite=
wm_strcat(DataWrite,"\0");
wip_write(ev->channel,DataWrite,wm_strlen(DataWrite));
break;
case WIP_CEV_PEER_CLOSE:
TRACE ( ( ERROR_TRACE_LEVEL, "WIP_CEV_PEER_CLOSE" ) );
// adl_fcmSwitchV24State (UARTHandle, ADL_FCM_V24_STATE_AT);
break;
case WIP_CEV_PING:
TRACE ( ( ERROR_TRACE_LEVEL, "WIP_CEV_PING" ) );
break;
case WIP_CEV_READ:
TRACE ( ( ERROR_TRACE_LEVEL, "WIP_CEV_READ" ) );
TRACE((1,"%d",ev->content.read.readable));
//DataRead = adl_memGet((ev->content.read.readable+1));
//wm_memset(DataRead,0x00,ev->content.read.readable);
[b]TRACE((1,"ev->channel %d , ev->content.read.readable %d",ev->channel, ev->content.read.readable));
TRACE((1,"ev->content.done.aux %d , ev->content.done.result %d",ev->content.done.aux, ev->content.done.result));[/b]
[b]TRACE((1,"ev->kind %d , ev->content.read %d",ev->kind, ev->content.read));[/b]
//TRACE((1,"ev->channel %d , ev->content.read.readable %d",ev->channel, ev->content.));
Read=wip_read(ev->channel,DataRead, sizeof(DataRead));//ev->content.read.readable);
switch (Read)
{
case WIP_CERR_CSTATE:
TRACE ((1,"WIP_CERR_CSTATE= %d",Read));
break;
case WIP_CERR_NOT_SUPPORTED:
TRACE ((1,"WIP_CERR_NOT_SUPPORTED= %d",Read));
break;
default:
[b]TRACE ((1,"Read= %d",Read));[/b]
TRACE((1,(ascii *)DataRead));
*(DataRead+Read) ='\0';
TRACE((1,(ascii *)DataRead));
//adl_fcmSendData (UARTHandle,(u8 *) DataRead, (ev->content.read.readable+1));
adl_atSendResponse(ADL_AT_RSP,(ascii *)DataRead);
break;
}
//adl_memRelease(DataRead);
break;
case WIP_CEV_WRITE:
TRACE ( ( ERROR_TRACE_LEVEL, "WIP_CEV_WRITE" ) );
break;
default:
TRACE ( ( ERROR_TRACE_LEVEL, "Unknown event ev->kind" ) );
break;
}
}
This is the result of code:
2014/03/27;08:45:53:340;001;ADL;1;Client 403753464 event
2014/03/27;08:45:53:340;002;ADL;1;WIP_CEV_OPEN
2014/03/27;08:45:53:340;004;ADL;1;WIP_CEV_WRITE
2014/03/27;08:45:53:340;005;ADL;1;Read= -994
2014/03/27;08:45:53:340;006;ADL;1;HELLO 403753464
2014/03/27;08:46:13:769;001;ADL;1;Client 403753464 event
2014/03/27;08:46:13:769;002;ADL;1;WIP_CEV_READ
2014/03/27;08:46:13:769;003;ADL;1;0
2014/03/27;08:46:13:769;004;ADL;1;ev->channel 403753464 , ev->content.read.readable 0
2014/03/27;08:46:13:769;005;ADL;1;ev->content.done.aux 0 , ev->content.done.result 0
2014/03/27;08:46:13:769;006;ADL;1;ev->kind 5 , ev->content.read 0
2014/03/27;08:46:13:769;007;ADL;1;Read= 9
2014/03/27;08:46:13:769;008;ADL;1;123456789a&
Over this and have any question
Why ev->content.read.readable returns zero ?
Where can I find a detailed description of wip_event_t? (In the “1-WIP_Open_AT_IP_Connectivity_Development_Guide” description missing).
Thank.