UDP Client

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers UsaClient.cpp Source File

UsaClient.cpp

00001 #include "UsaClient.hpp"
00002 
00003 UsaClient::UsaClient(EthernetInterface* _net)
00004 {
00005     net = _net;
00006     sock.open(net);
00007 }
00008 
00009 UsaClient::UsaClient(EthernetInterface* _net, const char* ip, int port)
00010 {
00011     net = _net;
00012     sock.open(net);
00013     socketAddress.set_ip_address(ip);
00014     socketAddress.set_port(port);
00015 }
00016 
00017 int UsaClient::Write(int address, const void* data, int size)
00018 {
00019     nsapi_size_or_error_t e;
00020     write_buffer.address = (uint32_t)address;
00021     write_buffer.rw = 0x00;
00022     write_buffer.option = 0x00;
00023     write_buffer.size = (uint16_t)size;
00024     uint8_t* p = (uint8_t*)data;
00025     for (int i = 0; i < size; i++, p++)
00026     {
00027         write_buffer.data[i] = *p;
00028     }
00029     e = sock.sendto(socketAddress, &write_buffer, 8 + size);
00030     return (int)e;
00031 }
00032 
00033 int UsaClient::Read(int address, const void* data, int size)
00034 {
00035     nsapi_size_or_error_t e;
00036     SocketAddress server_address;
00037     read_buffer.address = (uint32_t)address;
00038     read_buffer.rw = 0x01;
00039     read_buffer.option = 0x00;
00040     read_buffer.size = (uint16_t)size;
00041     e = sock.sendto(socketAddress, &read_buffer, 8);
00042     
00043     e = sock.recvfrom(&server_address, &read_buffer, 8 + size);
00044     uint8_t* p = (uint8_t*)data;
00045     for (int i = 0; i < size; i++, p++)
00046     {
00047         *p = read_buffer.data[i];
00048     }
00049     return (int)e;
00050 }