// %flair:license{ // This file is part of the Flair framework distributed under the // CECILL-C License, Version 1.0. // %flair:license} // created: 2015/05/27 // filename: Controller.cpp // // author: Gildas Bayard // Copyright Heudiasyc UMR UTC/CNRS 7253 // // version: $Id: $ // // purpose: Utility classes for controllers // // /*********************************************************************/ #include "Controller.h" using namespace flair::core; namespace flair { namespace sensor { RumbleMessage::RumbleMessage(unsigned int leftForce, unsigned int leftTimeout, unsigned int rightForce, unsigned int rightTimeout) : Message(sizeof(ControllerAction) + sizeof(leftForce) + sizeof(leftTimeout) + sizeof(rightForce) + sizeof(rightTimeout)) { SetLeftForce(leftForce); SetLeftTimeout(leftTimeout); SetRightForce(rightForce); SetRightTimeout(rightTimeout); buffer[0] = (char)ControllerAction::Rumble; } unsigned int RumbleMessage::GetLeftForce() const { unsigned int leftForce; memcpy(&leftForce, buffer + leftForceOffset, sizeof(leftForce)); return leftForce; } unsigned int RumbleMessage::GetLeftTimeout() const { unsigned int leftTimeout; memcpy(&leftTimeout, buffer + leftTimeoutOffset, sizeof(leftTimeout)); return leftTimeout; } unsigned int RumbleMessage::GetRightForce() const { unsigned int rightForce; memcpy(&rightForce, buffer + rightForceOffset, sizeof(rightForce)); return rightForce; } unsigned int RumbleMessage::GetRightTimeout() const { unsigned int rightTimeout; memcpy(&rightTimeout, buffer + rightTimeoutOffset, sizeof(rightTimeout)); return rightTimeout; } void RumbleMessage::SetLeftForce(unsigned int leftForce) { memcpy(buffer + leftForceOffset, &leftForce, sizeof(leftForce)); } void RumbleMessage::SetLeftTimeout(unsigned int leftTimeout) { memcpy(buffer + leftTimeoutOffset, &leftTimeout, sizeof(leftTimeout)); } void RumbleMessage::SetRightForce(unsigned int rightForce) { memcpy(buffer + rightForceOffset, &rightForce, sizeof(rightForce)); } void RumbleMessage::SetRightTimeout(unsigned int rightTimeout) { memcpy(buffer + rightTimeoutOffset, &rightTimeout, sizeof(rightTimeout)); } SwitchLedMessage::SwitchLedMessage(bool isOn, unsigned int ledId) : Message(sizeof(ControllerAction) + sizeof(isOn) + sizeof(ledId)) { if (isOn) SetOn(); else SetOff(); SetLedId(ledId); } bool SwitchLedMessage::IsOn() const { bool isOn; memcpy(&isOn, buffer + isOnOffset, sizeof(isOn)); return isOn; } unsigned int SwitchLedMessage::GetLedId() const { unsigned int ledId; memcpy(&ledId, buffer + ledIdOffset, sizeof(ledId)); return ledId; } void SwitchLedMessage::SetOn() { bool isOn = true; memcpy(buffer + isOnOffset, &isOn, sizeof(isOn)); } void SwitchLedMessage::SetOff() { bool isOn = false; memcpy(buffer + isOnOffset, &isOn, sizeof(isOn)); } void SwitchLedMessage::SetLedId(unsigned int ledId) { memcpy(buffer + ledIdOffset, &ledId, sizeof(ledId)); } FlashLedMessage::FlashLedMessage(unsigned int ledId, unsigned int onTime, unsigned int offTime) : Message(sizeof(ControllerAction) + sizeof(ledId) + sizeof(onTime) + sizeof(offTime)) { SetLedId(ledId); SetOnTime(onTime); SetOffTime(offTime); } unsigned int FlashLedMessage::GetLedId() const { unsigned int ledId; memcpy(&ledId, buffer + ledIdOffset, sizeof(ledId)); return ledId; } unsigned int FlashLedMessage::GetOnTime() const { unsigned int onTime; memcpy(&onTime, buffer + onTimeOffset, sizeof(onTime)); return onTime; } unsigned int FlashLedMessage::GetOffTime() const { unsigned int offTime; memcpy(&offTime, buffer + offTimeOffset, sizeof(offTime)); return offTime; } void FlashLedMessage::SetLedId(unsigned int ledId) { memcpy(buffer + ledIdOffset, &ledId, sizeof(ledId)); } void FlashLedMessage::SetOnTime(unsigned int onTime) { memcpy(buffer + onTimeOffset, &onTime, sizeof(onTime)); } void FlashLedMessage::SetOffTime(unsigned int offTime) { memcpy(buffer + offTimeOffset, &offTime, sizeof(offTime)); } } // end namespace sensor } // end namespace flair