00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "CD_Main.h"
00016
00017 #include <cds_digitalio.h>
00018
00019
00020
00021
00022
00023 void cds_DOL(const unsigned char *msg) {
00024
00025 uint8_t subdevice;
00026 uint8_t line;
00027 uint8_t value;
00028
00029
00030 if (CD_HexaStrTo_u8(msg, 2, &subdevice)) {
00031 CD_LinkMsgError(CD_Error_DAQBadSubdevice);
00032 return;
00033 };
00034
00035 if (CD_HexaStrTo_u8(msg+2, 2, &line)) {
00036 CD_LinkMsgError(CD_Error_DAQBadLine);
00037 return;
00038 };
00039
00040 if (CD_HexaStrTo_u8(msg+4, 1, &value)) {
00041 CD_LinkMsgError(CD_Error_BadValue);
00042 return;
00043 };
00044
00045 CD_LinkMsgError(cds_DAQWriteDigitalLine(subdevice ,line ,value));
00046
00047
00048
00049 }
00050
00051
00052
00053
00054 void cds_DIL(unsigned char *msg) {
00055
00056 uint8_t subdevice;
00057 uint8_t line;
00058 uint8_t value;
00059
00060 cd_Error retval;
00061
00062
00063 if (CD_HexaStrTo_u8(msg, 2, &subdevice)) {
00064 CD_LinkMsgError(CD_Error_DAQBadSubdevice);
00065 return;
00066 };
00067
00068 if (CD_HexaStrTo_u8(msg+2, 2, &line)) {
00069 CD_LinkMsgError(CD_Error_BadValue);
00070 return;
00071 };
00072
00073
00074 retval = cds_DAQReadDigitalLine(subdevice, line, &value);
00075
00076 if (retval != CD_Error_NoError) {
00077 CD_LinkMsgError(retval);
00078 } else {
00079 if (value) {
00080 CD_LinkTXStr("#!1\x0D");
00081 } else {
00082 CD_LinkTXStr("#!0\x0D");
00083 }
00084 }
00085
00086 }
00087
00088
00089
00090
00091
00092
00093
00094 void cds_DOP(const unsigned char *msg) {
00095
00096 uint8_t subdevice;
00097 uint8_t value;
00098
00099
00100 if (CD_HexaStrTo_u8(msg, 2, &subdevice)) {
00101 CD_LinkMsgError(CD_Error_DAQBadSubdevice);
00102 return;
00103 };
00104
00105 if (CD_HexaStrTo_u8(msg+8, 2, &value)) {
00106 CD_LinkMsgError(CD_Error_BadValue);
00107 return;
00108 };
00109
00110 CD_LinkMsgError(cds_DAQWriteDigitalPort(subdevice, value));
00111
00112
00113
00114 }
00115
00116
00117
00118
00119 void cds_DOM(const unsigned char *msg) {
00120
00121 uint8_t subdevice;
00122 uint8_t value;
00123 uint8_t mask;
00124
00125
00126 if (CD_HexaStrTo_u8(msg, 2, &subdevice)) {
00127 CD_LinkMsgError(CD_Error_DAQBadSubdevice);
00128 return;
00129 };
00130
00131
00132 if (CD_HexaStrTo_u8(msg+8, 2, &value)) {
00133 CD_LinkMsgError(CD_Error_BadValue);
00134 return;
00135 };
00136
00137
00138 if (CD_HexaStrTo_u8(msg+16, 2, &mask)) {
00139 CD_LinkMsgError(CD_Error_BadValue);
00140 return;
00141 };
00142
00143 CD_LinkMsgError(cds_DAQWriteDigitalPortMask(subdevice, value, mask));
00144
00145
00146 CD_LinkMsgOK();
00147 }
00148
00149
00150
00151
00152 void cds_DIP(unsigned char *msg) {
00153
00154 uint8_t subdevice;
00155 uint8_t value;
00156
00157 unsigned char resp[3];
00158
00159 cd_Error retval;
00160
00161
00162 if (CD_HexaStrTo_u8(msg, 2, &subdevice)) {
00163 CD_LinkMsgError(CD_Error_DAQBadSubdevice);
00164 return;
00165 };
00166
00167 retval = cds_DAQReadDigitalPort(subdevice, &value);
00168
00169 if (retval != CD_Error_NoError) {
00170 CD_LinkMsgError(retval);
00171 } else {
00172
00173 CD_u8_ToHexaStr(value, 2, resp);
00174 CD_LinkTXStr("#!000000");
00175 CD_LinkTXStr(resp);
00176 CD_LinkTXChar('\x0D');
00177 }
00178
00179 }
00180
00181
00182