MicroLabo / Mbed OS mbed-Dot-AT-Firmware

Dependencies:   MTS-Serial libmDot-mbed5

Fork of Dot-AT-Firmware by MultiTech

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers CmdDataSessionKey.cpp Source File

CmdDataSessionKey.cpp

00001 #include "CmdDataSessionKey.h"
00002 
00003 CmdDataSessionKey::CmdDataSessionKey() :
00004     Command("Data Session Key", "AT+DSK", "Data session encryption key (16 bytes)", "(hex:16)")
00005 {
00006     _queryable = true;
00007 }
00008 
00009 uint32_t CmdDataSessionKey::action(std::vector<std::string> args)
00010 {
00011     if (args.size() == 1)
00012     {;
00013         CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(CommandTerminal::Dot()->getDataSessionKey(), ".").c_str());
00014     }
00015     else if (args.size() == 2)
00016     {
00017         
00018         std::vector<uint8_t> NewKey;
00019 
00020         // Read in the key components...
00021         readByteArray(args[1], NewKey, KEY_LENGTH);
00022 
00023         if (CommandTerminal::Dot()->setDataSessionKey(NewKey) == mDot::MDOT_OK) {
00024             CommandTerminal::Serial()->writef("Set Data Session Key: ");
00025             CommandTerminal::Serial()->writef("%s\r\n", mts::Text::bin2hexString(NewKey, ".").c_str());
00026         } else {
00027             CommandTerminal::setErrorMessage(CommandTerminal::Dot()->getLastError());;
00028             return 1;
00029         }
00030     }
00031 
00032     return 0;
00033 }
00034 
00035 bool CmdDataSessionKey::verify(std::vector<std::string> args)
00036 {
00037     if (args.size() == 1)
00038         return true;
00039 
00040     if (args.size() == 2) {
00041         if (!isHexString(args[1], 16)) {
00042             CommandTerminal::setErrorMessage("Invalid key, expects (hex:16)");
00043             return false;
00044         }
00045 
00046         return true;
00047     }
00048 
00049     CommandTerminal::setErrorMessage("Invalid arguments");
00050     return false;
00051 }