00001 00040 #ifndef LibMultiSense_LedSetMessage 00041 #define LibMultiSense_LedSetMessage 00042 00043 #include "details/utility/Portability.hh" 00044 00045 namespace crl { 00046 namespace multisense { 00047 namespace details { 00048 namespace wire { 00049 00050 class LedSet { 00051 public: 00052 static CRL_CONSTEXPR IdType ID = ID_CMD_LED_SET; 00053 static CRL_CONSTEXPR VersionType VERSION = 1; 00054 00055 // 00056 // Bit mask selecting which LEDs to update 00057 00058 uint8_t mask; 00059 00060 // 00061 // 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 LedSet(utility::BufferStreamReader&r, VersionType v) {serialize(r,v);}; 00074 LedSet() : mask(0), flash(0) {}; 00075 00076 // 00077 // Serialization routine 00078 00079 template <class Archiver> 00080 void serialize(Archiver& archive, 00081 const VersionType version) 00082 { 00083 archive & mask; 00084 for(uint32_t i=0; i<lighting::MAX_LIGHTS; i++) 00085 archive & intensity[i]; 00086 archive & flash; 00087 } 00088 }; 00089 00090 }}}}; // namespaces 00091 00092 #endif