@@ -259,18 +259,18 @@ ACK::createTaskErrorCodeMap()
259259/*
260260 * Supported in Matrice 100
261261 */
262- const std::pair<const uint32_t , const char *> M100TaskData [] = {
263- std::make_pair (OpenProtocol::ErrorCode::ControlACK::M100Task ::SUCCESS,
262+ const std::pair<const uint32_t , const char *> LegacyTaskData [] = {
263+ std::make_pair (OpenProtocol::ErrorCode::ControlACK::LegacyTask ::SUCCESS,
264264 (const char *)" CONTROLLER_SUCCESS\n " ),
265- std::make_pair (OpenProtocol::ErrorCode::ControlACK::M100Task ::FAIL,
265+ std::make_pair (OpenProtocol::ErrorCode::ControlACK::LegacyTask ::FAIL,
266266 (const char *)" CONTROLLER_FAIL\n " )
267267};
268268
269269const std::map<const uint32_t , const char *>
270- ACK::createM100TaskErrorCodeMap ()
270+ ACK::createLegacyTaskErrorCodeMap ()
271271{
272272 const std::map<const uint32_t , const char *> errorCodeMap (
273- M100TaskData, M100TaskData + sizeof M100TaskData / sizeof M100TaskData [0 ]);
273+ LegacyTaskData, LegacyTaskData + sizeof LegacyTaskData / sizeof LegacyTaskData [0 ]);
274274 return errorCodeMap;
275275}
276276
@@ -501,7 +501,7 @@ ACK::getError(ACK::ErrorCode ack)
501501 else if (memcmp (cmd, OpenProtocol::CMDSet::Control::setArm, sizeof (cmd)) == 0 )
502502 {
503503 /*
504- * SetArm command supported in Matrice 100
504+ * SetArm command supported in Matrice 100/ M600 old firmware
505505 */
506506 return (ack.data == OpenProtocol::ErrorCode::ControlACK::SetArm::SUCCESS)
507507 ? ACK::SUCCESS
@@ -514,7 +514,15 @@ ACK::getError(ACK::ErrorCode ack)
514514 }
515515 else if (memcmp (cmd, OpenProtocol::CMDSet::Control::task, sizeof (cmd)) == 0 )
516516 {
517- if (ack.info .version != Version::M100_31)
517+ if (ack.info .version == Version::FW (3 ,2 ,15 ,62 ))
518+ {
519+ // ! ACKs supported in Matrice 600 old firmware
520+ return (ack.data ==
521+ OpenProtocol::ErrorCode::ControlACK::LegacyTask::SUCCESS)
522+ ? ACK::SUCCESS
523+ : ACK::FAIL;
524+ }
525+ else if (ack.info .version != Version::M100_31)
518526 {
519527 return (ack.data == OpenProtocol::ErrorCode::ControlACK::Task::SUCCESS)
520528 ? ACK::SUCCESS
@@ -524,7 +532,7 @@ ACK::getError(ACK::ErrorCode ack)
524532 {
525533 // ! ACKs supported in Matrice 100
526534 return (ack.data ==
527- OpenProtocol::ErrorCode::ControlACK::M100Task ::SUCCESS)
535+ OpenProtocol::ErrorCode::ControlACK::LegacyTask ::SUCCESS)
528536 ? ACK::SUCCESS
529537 : ACK::FAIL;
530538 }
@@ -746,13 +754,17 @@ ACK::getCMDIDTaskMSG(ACK::ErrorCode ack)
746754{
747755 std::map<const uint32_t , const char *> taskErrorCodeMap;
748756
749- if (ack.info .version != Version::M100_31)
757+ if (ack.info .version == Version::FW (3 ,2 ,15 ,62 ))
758+ {
759+ taskErrorCodeMap = static_cast <std::map<const uint32_t , const char *>>(ACK::createLegacyTaskErrorCodeMap ());
760+ }
761+ else if (ack.info .version == Version::M100_31)
750762 {
751- taskErrorCodeMap = ACK::createTaskErrorCodeMap ( );
763+ taskErrorCodeMap = static_cast <std::map< const uint32_t , const char *>>( ACK::createLegacyTaskErrorCodeMap () );
752764 }
753765 else
754766 {
755- taskErrorCodeMap = ACK::createM100TaskErrorCodeMap ( );
767+ taskErrorCodeMap = static_cast <std::map< const uint32_t , const char *>>( ACK::createTaskErrorCodeMap () );
756768 }
757769
758770 auto msg = taskErrorCodeMap.find (ack.data );
0 commit comments