00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "di194_commands.h"
00026 #include <unistd.h>
00027
00028
00029
00030
00031
00032
00043 const bool Ncmd(di_serial_io &conn, char *sn)
00044 {
00045 u_int8_t data[3] = {0, 'N', 'Z'};
00046 for(int i = 0; i < DI194_SN_LENGTH; i++)
00047 sn[i] = 0;
00048 u_int16_t amount = 3;
00049
00050 if(conn.di_send(&data[0], amount))
00051 return false;
00052 amount = DI194_SN_LENGTH;
00053
00054 if(conn.di_read(reinterpret_cast<u_int8_t *>(sn), amount, 0))
00055 return false;
00056
00057 return true;
00058 }
00059
00079 const bool Ccmd(di_serial_io &conn, const u_int8_t code)
00080 {
00081 u_int8_t data[3] = {0, 'C'};
00082 data[2] = code;
00083 if(data[2] > 0xF)
00084 data[2] = 0;
00085 u_int16_t amount = 3;
00086
00087 if(conn.di_send(&data[0], amount))
00088 return false;
00089
00090 return true;
00091 }
00092
00104 const bool Dcmd(di_serial_io &conn, const u_int8_t code)
00105 {
00106 u_int8_t data[3] = {0, 'D'};
00107 data[2] = code+48;
00108 if(data[2] != '1' && data[2] != '0')
00109 data[2] = '1';
00110 u_int16_t amount = 3;
00111
00112 if(conn.di_send(&data[0], amount))
00113 return false;
00114
00115 return true;
00116 }
00117
00129 const bool Scmd(di_serial_io &conn, const u_int8_t code)
00130 {
00131 u_int8_t data[3] = {0, 'S'};
00132 data[2] = code+48;
00133 if(data[2] != '1' && data[2] != '0')
00134 data[2] = '0';
00135 u_int16_t amount = 3;
00136
00137 if(data[2] == '1')
00138 {
00139
00140 if(conn.di_send(&data[0], amount, 2, 1))
00141 {
00142 if(my_errno == EBADRSVP)
00143 {
00144
00145 data[2] = '0';
00146 if(conn.di_send(&data[0], amount, 2, 1))
00147 {
00148
00149 return false;
00150 }
00151 data[2] = code + 48;
00152 if(conn.di_send(&data[0], amount, 2, 1))
00153 {
00154 return false;
00155 }
00156 }
00157 else
00158 {
00159 return false;
00160 }
00161 }
00162 }
00163 else
00164 {
00165
00166 if(!conn.di_send(&data[0], amount, 2, 1))
00167 return true;
00168
00169
00170 if(conn.di_send(&data[0], amount, 2))
00171 return false;
00172 }
00173
00174 return true;
00175 }