connect_device.c

00001 /*
00002   通信処理
00003   Satofumi KAMIMURA
00004   $Id$
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 

Generated on Mon Apr 13 22:52:05 2009 by  doxygen 1.5.7.1