00001 // Copyright (C) 2004 Pablo Mejia 00002 00003 00004 #ifndef SICK_MSG_0xB1_H 00005 #define SICK_MSG_0xB1_H 00006 00007 00008 #include "sick_msg.H" 00009 00010 00011 namespace sick 00012 { 00013 // LMS Status 00014 class msg_0xB1_t : public msg_t 00015 { 00016 protected: 00017 static unsigned const SW_VERSION_OFFSET = 5; 00018 static unsigned const OPERATING_MODE_OFFSET = 12; 00019 static unsigned const STATUS_OFFSET = 13; 00020 static unsigned const MANUFACTURER_CODE_OFFSET = 14; 00021 static unsigned const VARIANT_TYPE_OFFSET = 22; 00022 static unsigned const BAUD_RATE_OFFSET = 120; 00023 static unsigned const UNITS_OFFSET = 126; 00024 static unsigned const LASER_ENABLED_OFFSET = 127; 00025 static unsigned const BOOT_PROM_SW_VERSION_OFFSET = 128; 00026 00027 public: 00028 msg_0xB1_t (); 00029 msg_0xB1_t (msg_t const *msg) : msg_t (msg) {} 00030 00031 char const *sw_version (void) const 00032 { 00033 return ((char const *) (m_data + SW_VERSION_OFFSET)); 00034 } 00035 unsigned operating_mode (void) const 00036 { 00037 return (m_data[OPERATING_MODE_OFFSET]); 00038 } 00039 unsigned status (void) const 00040 { 00041 return (m_data[STATUS_OFFSET]); 00042 } 00043 char const *manufacturer_code (void) const 00044 { 00045 return ((char const *) 00046 (m_data + MANUFACTURER_CODE_OFFSET)); 00047 } 00048 00049 static unsigned const BAUD_500000 = 0x8001; 00050 static unsigned const BAUD_38400 = 0x8019; 00051 static unsigned const BAUD_19200 = 0x8033; 00052 static unsigned const BAUD_9600 = 0x8067; 00053 00054 unsigned baud_rate (void) const 00055 { 00056 return (letoh<u16_t> (m_data + BAUD_RATE_OFFSET)); 00057 } 00058 unsigned units (void) const 00059 { 00060 return (m_data[UNITS_OFFSET]); 00061 } 00062 bool laser_enabled (void) const 00063 { 00064 return (m_data[LASER_ENABLED_OFFSET]); 00065 } 00066 char const *boot_prom_sw_version (void) const 00067 { 00068 return ((char const *) 00069 (m_data + BOOT_PROM_SW_VERSION_OFFSET)); 00070 } 00071 }; 00072 }; 00073 00074 00075 #endif