added srv9
This commit is contained in:
58
pus/Service9TimeManagement.cpp
Normal file
58
pus/Service9TimeManagement.cpp
Normal file
@ -0,0 +1,58 @@
|
||||
#include "Service9TimeManagement.h"
|
||||
#include "servicepackets/Service9Packets.h"
|
||||
|
||||
#include "../timemanager/CCSDSTime.h"
|
||||
#include "../events/EventManagerIF.h"
|
||||
#include "../serviceinterface/ServiceInterfaceStream.h"
|
||||
|
||||
|
||||
Service9TimeManagement::Service9TimeManagement(object_id_t objectId,
|
||||
uint16_t apid, uint8_t serviceId) :
|
||||
PusServiceBase(objectId, apid , serviceId) {
|
||||
}
|
||||
|
||||
Service9TimeManagement::~Service9TimeManagement() {}
|
||||
|
||||
ReturnValue_t Service9TimeManagement::performService() {
|
||||
return RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) {
|
||||
switch(subservice){
|
||||
case SUBSERVICE::SET_TIME:{
|
||||
return setTime();
|
||||
}
|
||||
default:
|
||||
return AcceptsTelecommandsIF::INVALID_SUBSERVICE;
|
||||
}
|
||||
}
|
||||
|
||||
ReturnValue_t Service9TimeManagement::setTime() {
|
||||
Clock::TimeOfDay_t timeToSet;
|
||||
TimePacket timePacket(currentPacket.getApplicationData(),
|
||||
currentPacket.getApplicationDataSize());
|
||||
ReturnValue_t result = CCSDSTime::convertFromCcsds(&timeToSet,
|
||||
timePacket.getTime(), timePacket.getTimeSize());
|
||||
if(result != RETURN_OK) {
|
||||
triggerEvent(CLOCK_SET_FAILURE, result, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
uint32_t formerUptime;
|
||||
Clock::getUptime(&formerUptime);
|
||||
result = Clock::setClock(&timeToSet);
|
||||
|
||||
if(result == RETURN_OK) {
|
||||
uint32_t newUptime;
|
||||
Clock::getUptime(&newUptime);
|
||||
triggerEvent(CLOCK_SET,newUptime,formerUptime);
|
||||
return RETURN_OK;
|
||||
}
|
||||
else {
|
||||
triggerEvent(CLOCK_SET_FAILURE, result, 0);
|
||||
return RETURN_FAILED;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user