00001 00040 #ifndef LibMultiSense_LedStatusMessage 00041 #define LibMultiSense_LedStatusMessage 00042 00043 #include "details/utility/Portability.hh" 00044 00045 namespace crl { 00046 namespace multisense { 00047 namespace details { 00048 namespace wire { 00049 00050 class LedStatus { 00051 public: 00052 static CRL_CONSTEXPR IdType ID = ID_DATA_LED_STATUS; 00053 static CRL_CONSTEXPR VersionType VERSION = 1; 00054 00055 // 00056 // Bit mask indicating which LEDs are implemented 00057 00058 uint8_t available; 00059 00060 // 00061 // Current LED duty cycles; 0 = off; 255 = 100% 00062 00063 uint8_t intensity[lighting::MAX_LIGHTS]; 00064 00065 // 00066 // If non-zero, LEDs are only on while sensors are exposing 00067 00068 uint8_t flash; 00069 00070 // 00071 // Constructors 00072 00073 LedStatus(utility::BufferStreamReader&r, VersionType v) {serialize(r,v);}; 00074 LedStatus() : available(0), flash(0) {}; 00075 00076 // 00077 // Serialization routine 00078 00079 template<class Archive> 00080 void serialize(Archive& message, 00081 const VersionType version) 00082 { 00083 message & available; 00084 for(uint32_t i=0; i<lighting::MAX_LIGHTS; i++) 00085 message & intensity[i]; 00086 message & flash; 00087 } 00088 }; 00089 00090 }}}}; // namespaces 00091 00092 #endif