ex

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers baidu_ca_network_socket.h Source File

baidu_ca_network_socket.h

00001 // Copyright 2017 Baidu Inc. All Rights Reserved.
00002 // Author: Su Hao (suhao@baidu.com)
00003 //
00004 // Description: SocketAdapter
00005 
00006 #ifndef BAIDU_IOT_TINYDU_IOT_OS_SRC_IOT_BAIDU_CA_ADAPTER_BAIDU_CA_NETWORK_SOCKET_H
00007 #define BAIDU_IOT_TINYDU_IOT_OS_SRC_IOT_BAIDU_CA_ADAPTER_BAIDU_CA_NETWORK_SOCKET_H
00008 
00009 #include "mbed.h"
00010 #include "baidu_ca.h"
00011 
00012 namespace duer {
00013 
00014 class SocketAdapter {
00015 public:
00016 
00017     typedef mbed::Callback<void (const bca_addr_t*)> Callback;
00018 
00019     SocketAdapter();
00020 
00021     virtual ~SocketAdapter();
00022 
00023     int connect(const bca_addr_t* addr);
00024 
00025     int send(const void* data, size_t size);
00026 
00027     int recv(void* data, size_t size);
00028 
00029     int close();
00030 
00031     void attach(Callback callback);
00032 
00033     template <typename T, typename M>
00034     void attach(T* obj, M method) {
00035         attach(Callback(obj, method));
00036     }
00037 
00038     static void set_network_interface(NetworkInterface* ifc);
00039 
00040     static NetworkInterface* get_network_interface();
00041 
00042     // the unit of speed is k/s
00043     static void bca_coap_get_statistic(float* upload_speed, float* download_speed);
00044 private:
00045 
00046     void on_read();
00047 
00048     Socket*    _socket;
00049     bca_addr_t _addr;
00050     Callback   _callback;
00051 
00052     static NetworkInterface* _s_interface;
00053 };
00054 
00055 } // namespace duer
00056 
00057 #endif // BAIDU_IOT_TINYDU_IOT_OS_SRC_IOT_BAIDU_CA_ADAPTER_BAIDU_CA_NETWORK_SOCKET_H