10 #ifndef SICK_ACFR_DRIVER_SICKDEFINES_H 11 #define SICK_ACFR_DRIVER_SICKDEFINES_H 18 typedef unsigned char uChar;
24 const uChar STX = 0x02;
25 const uChar ACK = 0x06;
26 const uChar NACK = 0x15;
27 const uChar ADDRESS = 0x00;
29 const int MAX_SICK_TELEGRAM_LENGTH = 812;
31 const int MAX_RESPONSE_TIME_MS = 60;
37 const uChar CMD_INIT_AND_RESET = 0x10;
38 const uChar CMD_SWITCH_OPERATING_MODE = 0x20;
39 const uChar CMD_REQUEST_MEASURED_VALUES = 0x30;
40 const uChar CMD_REQUEST_LMS_STATUS = 0x31;
41 const uChar CMD_REQUEST_ERROR_OR_TEST_MESSAGE = 0x32;
42 const uChar CMD_REQUEST_OPERATING_DATA_COUNTER = 0x35;
43 const uChar CMD_REQUEST_MEAN_MEASURED_VALUES = 0x36;
44 const uChar CMD_REQUEST_MEASURED_VALUE_SUBRANGE = 0x37;
45 const uChar CMD_REQUEST_LMS_TYPE = 0x3A;
46 const uChar CMD_SWITCH_VARIANT = 0x3B;
47 const uChar CMD_REQUEST_MEASURED_VALUE_WITH_FIELD_VALUES = 0x3E;
48 const uChar CMD_REQUEST_MEAN_MEASURED_VALUE_SUBRANGE = 0x3F;
49 const uChar CMD_CONFIGURE_FIELDS = 0x40;
50 const uChar CMD_SWITCH_ACTIVE_FIELD_SET = 0x41;
51 const uChar CMD_CHANGE_PASSWORD = 0x42;
52 const uChar CMD_REQUEST_MEASURED_VALUES_AND_REFLECTIVITY_VALUE_SUBRANGE = 0x44;
53 const uChar CMD_REQUEST_CONFIGURED_FIELDS = 0x45;
54 const uChar CMD_START_TEACH_MODE_FOR_FIELD_CONFIGURATION = 0x46;
55 const uChar CMD_REQUEST_STATUS_OF_FIELD_OUTPUTS = 0x4A;
56 const uChar CMD_DEFINE_PERMANENT_BAUD_RATE_OR_LMS_TYPE = 0x66;
57 const uChar CMD_DEFINE_ANGULAR_RANGE_FOR_POSITIONING_AID = 0x69;
58 const uChar CMD_REQUEST_LMS_CONFIGURATION = 0x74;
59 const uChar CMD_REQUEST_MEASURED_VALUE_WITH_REFLECTIVITY_DATA = 0x75;
60 const uChar CMD_REQUEST_MEASURED_VALUES_IN_CARTESIAN_COORDINATES = 0x76;
61 const uChar CMD_CONFIGURE_LMS = 0x77;
62 const uChar CMD_CONFIGURE_LMS_CONTINUED = 0x7C;
69 inline uChar ack( uChar command ) {
return (uChar)(command + 0x80); }
72 const uChar ACK_INIT_AND_RESET = CMD_INIT_AND_RESET + 0x80;
73 const uChar ACK_SWITCH_OPERATING_MODE = CMD_SWITCH_OPERATING_MODE + 0x80;
74 const uChar ACK_REQUEST_MEASURED_VALUES = CMD_REQUEST_MEASURED_VALUES + 0x80;
75 const uChar ACK_REQUEST_LMS_STATUS = CMD_REQUEST_LMS_STATUS + 0x80;
76 const uChar ACK_REQUEST_ERROR_OR_TEST_MESSAGE = CMD_REQUEST_ERROR_OR_TEST_MESSAGE + 0x80;
77 const uChar ACK_REQUEST_OPERATING_DATA_COUNTER = CMD_REQUEST_OPERATING_DATA_COUNTER + 0x80;
78 const uChar ACK_REQUEST_MEAN_MEASURED_VALUES = CMD_REQUEST_MEAN_MEASURED_VALUES + 0x80;
79 const uChar ACK_REQUEST_MEASURED_VALUE_SUBRANGE = CMD_REQUEST_MEASURED_VALUE_SUBRANGE + 0x80;
80 const uChar ACK_REQUEST_LMS_TYPE = CMD_REQUEST_LMS_TYPE + 0x80;
81 const uChar ACK_SWITCH_VARIANT = CMD_SWITCH_VARIANT + 0x80;
82 const uChar ACK_REQUEST_MEASURED_VALUE_WITH_FIELD_VALUES =
83 CMD_REQUEST_MEASURED_VALUE_WITH_FIELD_VALUES + 0x80;
84 const uChar ACK_REQUEST_MEAN_MEASURED_VALUE_SUBRANGE =
85 CMD_REQUEST_MEAN_MEASURED_VALUE_SUBRANGE + 0x80;
86 const uChar ACK_CONFIGURE_FIELDS = CMD_CONFIGURE_FIELDS + 0x80;
87 const uChar ACK_SWITCH_ACTIVE_FIELD_SET = CMD_SWITCH_ACTIVE_FIELD_SET + 0x80;
88 const uChar ACK_CHANGE_PASSWORD = CMD_CHANGE_PASSWORD + 0x80;
89 const uChar ACK_REQUEST_MEASURED_VALUES_AND_REFLECTIVITY_VALUE_SUBRANGE =
90 CMD_REQUEST_MEASURED_VALUES_AND_REFLECTIVITY_VALUE_SUBRANGE + 0x80;
91 const uChar ACK_REQUEST_CONFIGURED_FIELDS = CMD_REQUEST_CONFIGURED_FIELDS + 0x80;
92 const uChar ACK_START_TEACH_MODE_FOR_FIELD_CONFIGURATION =
93 CMD_START_TEACH_MODE_FOR_FIELD_CONFIGURATION + 0x80;
94 const uChar ACK_REQUEST_STATUS_OF_FIELD_OUTPUTS = CMD_REQUEST_STATUS_OF_FIELD_OUTPUTS + 0x80;
95 const uChar ACK_DEFINE_PERMANENT_BAUD_RATE_OR_LMS_TYPE =
96 CMD_DEFINE_PERMANENT_BAUD_RATE_OR_LMS_TYPE + 0x80;
97 const uChar ACK_DEFINE_ANGULAR_RANGE_FOR_POSITIONING_AID =
98 CMD_DEFINE_ANGULAR_RANGE_FOR_POSITIONING_AID + 0x80;
99 const uChar ACK_REQUEST_LMS_CONFIGURATION = CMD_REQUEST_LMS_CONFIGURATION + 0x80;
100 const uChar ACK_REQUEST_MEASURED_VALUE_WITH_REFLECTIVITY_DATA =
101 CMD_REQUEST_MEASURED_VALUE_WITH_REFLECTIVITY_DATA + 0x80;
102 const uChar ACK_REQUEST_MEASURED_VALUES_IN_CARTESIAN_COORDINATES =
103 CMD_REQUEST_MEASURED_VALUES_IN_CARTESIAN_COORDINATES + 0x80;
104 const uChar ACK_CONFIGURE_LMS = CMD_CONFIGURE_LMS + 0x80;
105 const uChar ACK_CONFIGURE_LMS_CONTINUED = CMD_CONFIGURE_LMS_CONTINUED + 0x80;
108 const uChar RESP_SOFTWARE_RESET_CONFIRM = 0x91;
109 const uChar RESP_INCORRECT_COMMAND = 0x92;
111 std::string cmdToString( uChar command );
118 const uChar OPERATING_MODE_INSTALLATION = 0x00;
120 const uChar OPERATING_MODE_DIAGNOSIS = 0x10;
122 const uChar OPERATING_MODE_MIN_MEASURED_CONTINUOUS = 0x20;
123 const uChar OPERATING_MODE_MIN_MEASURED_IN_FIELD = 0x21;
124 const uChar OPERATING_MODE_MIN_VERTICAL_DISTANCE_CONTINUOUS = 0x22;
125 const uChar OPERATING_MODE_MIN_VERTICAL_DISTANCE_IN_FIELD = 0x23;
126 const uChar OPERATING_MODE_ALL_MEASURED_CONTINUOUS = 0x24;
127 const uChar OPERATING_MODE_MEASURED_ON_REQUEST = 0x25;
128 const uChar OPERATING_MODE_MEAN_MEASURED_CONTINUOUS = 0x26;
129 const uChar OPERATING_MODE_MEASURED_SUBRANGE_CONTINUOUS = 0x27;
130 const uChar OPERATING_MODE_MEAN_MEASURED_SUBRANGE_CONTINUOUS = 0x28;
131 const uChar OPERATING_MODE_MEASURED_WITH_FIELD_VALUES_CONTINUOUS = 0x29;
132 const uChar OPERATING_MODE_MEASURED_PARTIAL_CONTINUOUS = 0x2A;
133 const uChar OPERATING_MODE_MEASURED_N_PARTIAL_CONTINUOUS = 0x2B;
134 const uChar OPERATING_MODE_MEASURED_PER_SEGMENT_CONTINUOUS = 0x2C;
135 const uChar OPERATING_MODE_NAV_DATA_RECORDS = 0x2E;
136 const uChar OPERATING_MODE_ALL_MEASURED_PLUS_REFLECTIVITY_SUBRANGE_CONTINUOUS = 0x50;
138 const uChar OPERATING_MODE_TEST_PASSWORD = 0x30;
140 const uChar OPERATING_MODE_SET_BAUDRATE_38400 = 0x40;
141 const uChar OPERATING_MODE_SET_BAUDRATE_19200 = 0x41;
142 const uChar OPERATING_MODE_SET_BAUDRATE_9600 = 0x42;
143 const uChar OPERATING_MODE_SET_BAUDRATE_500000 = 0x48;
145 std::string operatingModeToString( uChar operatingMode );
151 const uChar OPERATING_MODE_RESPONSE_SUCCESS = 0x00;
152 const uChar OPERATING_MODE_RESPONSE_FAIL = 0x01;
158 const int VERSION_LENGTH = 6;
159 const int SOFTWARE_VERSION_LENGTH = 6;
160 const int MANUFACTURER_LENGTH = 8;
161 const int POLLUTION_LENGTH = 8;
162 const int REF_POLLUTION_LENGTH = 4;
163 const int CALIB_POLLUTION_LENGTH = 8;
164 const int CALIB_REF_POLLUTION_LENGTH = 4;
170 const uChar MEASURING_MODE_8m80m_FIELD_AB_DAZZLE = 0x00;
171 const uChar MEASURING_MODE_8m80m_REFLECTOR8LEVELS = 0x01;
172 const uChar MEASURING_MODE_8m80m_FIELD_ABC = 0x02;
173 const uChar MEASURING_MODE_16m_REFLECTOR4LEVELS = 0x03;
174 const uChar MEASURING_MODE_16m_FIELD_AB = 0x04;
175 const uChar MEASURING_MODE_32m_FIELD_AB = 0x05;
176 const uChar MEASURING_MODE_32m_FIELD_A = 0x06;
178 std::string measuringModeToString( uChar mode );
185 const uChar STATUS_GENERAL_MASK = 0x07;
187 const uChar STATUS_OK = 0x00;
188 const uChar STATUS_INFO = 0x01;
189 const uChar STATUS_WARNING = 0x02;
190 const uChar STATUS_ERROR = 0x03;
191 const uChar STATUS_FATAL_ERROR = 0x04;
194 const uChar STATUS_RESTART_MASK = 0x20;
195 const uChar STATUS_IMPLAUSIBLE_MEASURED_VALUES_MASK = 0x30;
196 const uChar STATUS_POLLUTION_MASK = 0x80;
198 std::string statusToString( uChar status );
199 bool generalStatusIsWarn( uChar generalStatus );
200 bool generalStatusIsError( uChar generalStatus );
208 const uChar MODE_SWITCH_SUCCESS_OK = 0x00;
209 const uChar MODE_SWITCH_FAIL_BAD_PASSWORD = 0x01;
210 const uChar MODE_SWITCH_FAIL_LMS_FAULT = 0x02;
212 std::string modeSwitchSuccessToString( uChar success );
219 const uChar MEASURED_VALUE_UNIT_CM = 0x00;
220 const uChar MEASURED_VALUE_UNIT_MM = 0x01;
222 std::string measuredValueUnitToString( uChar unit );
228 const uint16_t ANGULAR_RESOLUTION_1_0_DEG = 100;
229 const uint16_t ANGULAR_RESOLUTION_0_5_DEG = 50;
230 const uint16_t ANGULAR_RESOLUTION_0_25_DEG = 25;
232 inline double angularResolutionToDoubleInDegrees( uint16_t angularResolution )
233 {
return angularResolution/100.0; }
235 const uint16_t SCANNING_ANGLE_180 = 180;
236 const uint16_t SCANNING_ANGLE_100 = 100;
238 const uChar SWITCH_VARIANT_SUCCESS = 0x01;
239 const uChar SWITCH_VARIANT_FAIL = 0x00;
241 std::string switchVariantSuccessToString( uChar success );
248 const uChar SENSITIVITY_STANDARD = 0x00;
249 const uChar SENSITIVITY_MEDIUM = 0x01;
250 const uChar SENSITIVITY_LOW = 0x02;
251 const uChar SENSITIVITY_HIGH = 0x03;
253 std::string sensitivityToString( uChar sens );
260 const uChar CONFIGURATION_SUCCESS = 0x01;
261 const uChar CONFIGURATION_FAIL = 0x00;
263 std::string configurationSuccessToString( uChar success );
271 int baudRateToInt( uint16_t baudRate );
272 uChar baudRateIntToOperatingMode(
int baudRate );
274 std::string permanentBaudRateToString( uChar permanentBaudRate );
281 const uChar ERROR_TYPE_NO_LONGER_RELEVANT_MASK = 0x80;
283 const uChar ERROR_CODE_DAZZLE_TEST = 05;
284 const uChar ERROR_CODE_PEAK_COMPARATOR_TEST = 06;
285 const uChar ERROR_CODE_STOP_COMPARATOR_TEST = 07;
286 const uChar ERROR_CODE_TDC_INIT_AND_GATE_FUNCTION_TEST = 15;
287 const uChar ERROR_CODE_POLLUTION_EVALUATION_OIL_CHANNEL_1 = 17;
288 const uChar ERROR_CODE_POLLUTION_EVALUATION_DIRT_CHANNEL_1 = 18;
289 const uChar ERROR_CODE_POLLUTION_EVALUATION_DIRT_CHANNEL_2 = 19;
290 const uChar ERROR_CODE_POLLUTION_EVALUATION_OIL_CHANNEL_2 = 20;
291 const uChar ERROR_CODE_POLLUTION_EVALUATION_REF_CHANNEL_0 = 21;
292 const uChar ERROR_CODE_POLLUTION_EVALUATION_REF_CHANNEL_1 = 22;
293 const uChar ERROR_CODE_OUTPUT_A_DEFECTIVE = 27;
294 const uChar ERROR_CODE_OUTPUT_B_DEFECTIVE = 28;
295 const uChar ERROR_CODE_NUM_MOTOR_REVOLUTIONS = 29;
296 const uChar ERROR_CODE_CALIBRATION_POLLUTION = 37;
297 const uChar ERROR_CODE_TIMEOUT_ON_TDC_CALIBRATION = 39;
298 const uChar ERROR_CODE_1_MEASUREMENT_VALUE_MISSING = 45;
299 const uChar ERROR_CODE_1_SCAN_MISSING_SCAN_LASTS_TOO_LONG = 46;
300 const uChar ERROR_CODE_REFERENCE_TARGET_LOAD_PULSE_WIDTH_IMPLAUSIBLE = 47;
301 const uChar ERROR_CODE_CALIBRATION_OF_LASER_POWER = 48;
302 const uChar ERROR_CODE_LASER_POWER_OUTSIDE_50_PCT_140_PCT = 49;
303 const uChar ERROR_CODE_INITIALISATION_TDC_MO_CHANNEL_0_AND_1 = 50;
304 const uChar ERROR_CODE_DA_AD_TEST_STOP_BRANCH = 51;
305 const uChar ERROR_CODE_DA_AD_TEST_PEAK_BRANCH = 52;
306 const uChar ERROR_CODE_FLASH_WRITTEN = 53;
307 const uChar ERROR_CODE_POLLUTION_CHANNEL_MEASUREMENT_WITHOUT_ACTIVE_TRANSMITTER = 54;
308 const uChar ERROR_CODE_NO_TWO_DIFFERENT_ANGLES_DETECTED_ON_LASER_POWER_CALIBRATION = 55;
309 const uChar ERROR_CODE_HARDWARE_WATCHDOG_DEFECTIVE = 56;
310 const uChar ERROR_CODE_NO_ZERO_INDEX_SIGNAL_AVAILABLE = 57;
311 const uChar ERROR_CODE_SLAVE_CANNOT_SYNC_DURING_INIT = 58;
312 const uChar ERROR_CODE_SYNC_LOST_IN_OPERATING_STATE = 59;
313 const uChar ERROR_CODE_SYNC_CYCLE_FROM_MASTER_MISSING = 60;
314 const uChar ERROR_CODE_HARDWARE_UNSUITABLE_FOR_SYNC_IN_SLAVE_OPERATING_MODE = 61;
315 const uChar ERROR_CODE_WRONG_DIP_SWITCH_POSITION = 62;
316 const uChar ERROR_CODE_REF_TARGET_SMALLEST_PULSE_WIDTH_TOO_SMALL = 86;
317 const uChar ERROR_CODE_REF_TARGET_LARGEST_PULSE_WIDTH_TOO_LARGE = 87;
318 const uChar ERROR_CODE_REF_TARGET_PULSE_WIDTH_SPECTRUM_TOO_LARGE = 88;
319 const uChar ERROR_CODE_REF_TARGET_REF_TABLE_LESS_THAN_2_CYCLES_UPDATE = 89;
320 const uChar ERROR_CODE_REF_TARGET_REFLECTIVITY_MEASUREMENT_CANNOT_BE_CALIBRATED = 91;
321 const uChar ERROR_CODE_REF_TARGET_TEACH_IN_MODE_IS_NOT_COMPLETED = 92;
322 const uChar ERROR_CODE_OUT_OF_MEMORY_IN_MEASUREMENT_ROUTINE = 124;
323 const uChar ERROR_CODE_OUT_OF_MEMORY_IN_REFERENCE_TARGET_ROUTINE = 125;
324 const uChar ERROR_CODE_OUT_OF_MEMORY_IN_REFERENCE_TARGET_ANGULAR_TABLE = 126;
326 std::string errorTypeToString( uChar errorType );
327 bool errorTypeIsWarn( uChar errorType );
328 bool errorTypeIsError( uChar errorType );
329 std::string errorCodeToString( uChar errorCode );