00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "debug.h"
00025 #include "datatypes.h"
00026 #include "globalvariables.h"
00027 #include "system.h"
00028 #include "tcp_ip.h"
00029
00030 #include "string.h"
00031 #include "MOTTYPES.h"
00032 #include "IO_Map.h"
00033
00034
00035
00036
00037
00038
00039
00040
00041 void udp_demo_run(void);
00042
00043 INT32 udp_demo_eventlistener(INT8 , UINT8 , UINT32 , UINT16 , UINT16 , UINT16 );
00044 INT8 udp_demo_soch;
00045
00046 #define UDP_DEMO_PORT 2001
00047 #define UDP_DEMO_RMTHOST_IP 0xC0A80201
00048 #define UDP_DEMO_RMTHOST_PRT 2000
00049
00050 extern INT8 SendData;
00051 extern INT8 RcvData;
00052 extern char toSend[15];
00053 extern char rcvPacket[31];
00054
00055
00056
00057
00058
00059 UINT16 SendSerial() {
00060
00061 UINT16 i, datalen;
00062
00063 if (SendData == 1) {
00064
00065 for (i = 0; i< 14; i++) {
00066 net_buf[UDP_APP_OFFSET+i]= toSend[i];
00067 }
00068 datalen = i+1;
00069
00070 i = udp_send(udp_demo_soch,UDP_DEMO_RMTHOST_IP,UDP_DEMO_RMTHOST_PRT,net_buf+UDP_APP_OFFSET,NETWORK_TX_BUFFER_SIZE-UDP_APP_OFFSET,datalen);
00071
00072 SendData = 0;
00073 }
00074 return 0;
00075 }
00076
00077
00078
00079
00080
00081
00082 void udp_demo_init(void){
00083
00084 DEBUGOUT("Initializing UDP demo client\r\n");
00085
00086
00087
00088
00089
00090
00091
00092
00093 udp_demo_soch=udp_getsocket(0 , udp_demo_eventlistener , UDP_OPT_SEND_CS | UDP_OPT_CHECK_CS);
00094
00095 if(udp_demo_soch == -1){
00096 DEBUGOUT("No free UDP sockets!! \r\n");
00097 RESET_SYSTEM();
00098 }
00099
00100
00101 (void)udp_open(udp_demo_soch,UDP_DEMO_PORT);
00102
00103
00104 SendData = 0;
00105 }
00106
00107
00108
00109
00110
00111
00112 void udp_demo_run(void){
00113 void)SendSerial();
00114 }
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131 extern byte state;
00132
00133 INT32 udp_demo_eventlistener (INT8 cbhandle, UINT8 event, UINT32 ipaddr, UINT16 port, UINT16 buffindex, UINT16 datalen) {
00134
00135 int i,j,k;
00136 ipaddr = 0;
00137 buffindex = 0;
00138 port = 0;
00139
00140 if(cbhandle!=udp_demo_soch){
00141 DEBUGOUT("Not my handle!!!!");
00142 return (-1);
00143 }
00144 switch(event){
00145 case UDP_EVENT_DATA:
00146
00147
00148 if(datalen>(NETWORK_TX_BUFFER_SIZE-UDP_APP_OFFSET))
00149 datalen=NETWORK_TX_BUFFER_SIZE-UDP_APP_OFFSET;
00150
00151
00152 RECEIVE_NETWORK_BUF(net_buf+UDP_APP_OFFSET,datalen);
00153
00154 for (i = 0; i <= datalen; i++){
00155 rcvPacket[i] = net_buf[UDP_APP_OFFSET+i];
00156 }
00157
00158 break;
00159 default:
00160
00161 DEBUGOUT("Unknown UDP event :-(");
00162 break;
00163 }
00164 if (SendData == 1) {
00165 RcvData = 1;
00166 }
00167
00168 return 0;
00169 }