connect_device.c
00001
00002
00003
00004
00005
00006
00007 #include "connect_device.h"
00008 #include "tcpip_device.h"
00009 #include "serial_device.h"
00010
00011 static int uid = 0;
00012 static int ids_mode[ID_MAX];
00013 static int id_index[ID_MAX];
00014
00015
00016 int initConnectDevice(const char *devName, int baudrate, int mode) {
00017 ids_mode[uid] = mode;
00018
00019 switch (mode) {
00020 case TCP_IP:
00021 id_index[uid] = tcpip_open(devName, baudrate);
00022 break;
00023
00024 case SERIAL:
00025 id_index[uid] = serial_open(devName, baudrate);
00026 device_set_baudrate(id_index[uid], baudrate);
00027 break;
00028
00029 default:
00030 return -1;
00031 }
00032 if (id_index[uid] < 0) {
00033 return id_index[uid];
00034 } else {
00035 return (uid++);
00036 }
00037 }
00038
00039
00040 void closeDevice(int id) {
00041 if (id < 0) {
00042 return;
00043 }
00044 switch (ids_mode[id]) {
00045 case TCP_IP:
00046 tcpip_close(id_index[id]);
00047 break;
00048
00049 case SERIAL:
00050 serial_close(id_index[id]);
00051 break;
00052 }
00053 }
00054
00055
00056 int device_is_connected(int id) {
00057 if (id < 0) {
00058 return -1;
00059 }
00060 switch (ids_mode[id]) {
00061 case TCP_IP:
00062 return tcpip_is_connected(id_index[id]);
00063 break;
00064
00065 case SERIAL:
00066 return serial_is_connected(id_index[id]);
00067 break;
00068
00069 default:
00070 return -1;
00071 break;
00072 }
00073 }
00074
00075
00076 int device_send(int id, const char *data, int length) {
00077 if (id < 0) {
00078 return -1;
00079 }
00080 switch (ids_mode[id]) {
00081 case TCP_IP:
00082 return tcpip_send(id_index[id], data, length);
00083 break;
00084
00085 case SERIAL:
00086 return serial_send(id_index[id], data, length);
00087 break;
00088
00089 default:
00090 return -1;
00091 break;
00092 }
00093 }
00094
00095
00096 int device_recv(int id, char *data, int size, int timeout) {
00097 if (id < 0) {
00098 return -1;
00099 }
00100 switch (ids_mode[id]) {
00101 case TCP_IP:
00102 return tcpip_recv(id_index[id], data, size, timeout);
00103 break;
00104
00105 case SERIAL:
00106 return serial_recv(id_index[id], data, size, timeout);
00107 break;
00108
00109 default:
00110 return -1;
00111 break;
00112 }
00113 }
00114
00115
00116 void device_flush(int id) {
00117 if (id < 0) {
00118 return;
00119 }
00120 switch (ids_mode[id]) {
00121 case SERIAL:
00122 serial_flush(id_index[id]);
00123 break;
00124 }
00125 }
00126
00127
00128 int device_set_baudrate(int id, long baudrate) {
00129 if (id < 0) {
00130 return -1;
00131 }
00132 switch (ids_mode[id]) {
00133 case TCP_IP:
00134 return 0;
00135 break;
00136
00137 case SERIAL:
00138 return serial_set_baudrate(id_index[id], baudrate);
00139 break;
00140
00141 default:
00142 return -1;
00143 break;
00144 }
00145 }
00146