/* * Copyright (C) 2019 by Multi-Tech Systems * * This file is part of libmts-io. * * libmts-io is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * libmts-io is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with libmts-io. If not, see . * */ #ifndef MTS_IO_TELITRADIO_H_ #define MTS_IO_TELITRADIO_H_ #include #include namespace MTS { namespace IO { class TelitRadio : public CellularRadio { public: bool resetRadio(uint32_t iTimeoutMillis = 5000) override; CODE getFirmwareBuild(std::string& sFirmwareBuild) override; CODE getVendorFirmware(std::string& sVendorFirmware) override; CODE getModel(std::string& sModel) override; CODE getIccid(std::string& sIccid) override; CODE getService(std::string& sService) override; CODE getNetwork(std::string& sNetwork) override; CODE getNetworkStatus(Json::Value& jData) override; CODE convertSignalStrengthTodBm(const int32_t& iRssi, int32_t& dBm) override; CODE convertdBmToSignalStrength(const int32_t& dBm, int32_t& iRssi) override; CODE setMdn(const Json::Value& jArgs) override; CODE getSupportedCellularModes(CELLULAR_MODES &networks) override; CODE setCellularMode(CELLULAR_MODES networks) override; CODE updateFumoLocal(int fd, UpdateCb& stepCb) override; CODE fumoLocalInject(int fd, UpdateCb& stepCb) override; CODE fumoLocalApply(UpdateCb& stepCb) override; CODE getSelectedBandsRaw(std::string& sRawBands) override; protected: TelitRadio(const std::string& sName, const std::string& sRadioPort); bool getCarrierFromFirmware(const std::string& sFirmware, std::string& sCarrier) override; bool getHardwareVersionFromFirmware(const std::string& sFirmware, std::string& sHardware) override; CODE getIsSimInserted(bool& bData) override; CODE getSimLockAttempts(int& iAttemptsPin, int& iAttemptsPuk) override; enum FOTA_GROUP : uint8_t { VALUE_GROUP_A = 0, VALUE_GROUP_B, VALUE_GROUP_C, VALUE_GROUP_D, VALUE_UNKNOWN }; virtual FOTA_GROUP getFotaGroup(); virtual CODE fumoWriteGroupsABD(int fd, UpdateCb& stepCb); //virtual CODE fumoWriteGroupC(int fd, UpdateCb& stepCb); std::vector getSupportedPdpContextAuthTypes() const override; CODE isPdpContextAuthSupported(bool& isSupported) override; CODE fillPdpContextAuthFields(Json::Value &jData) override; CODE setPdpContextAuth(const PdpContextInfo& pdpContext) override; const std::vector& getDiagCommands(bool bIsSimReady = true) override; static bool isContainsSignChar(const std::string& str); CODE setTimeFormat() override; private: virtual CODE getSimLockAttempts(int& iAttemptsPin, int& iAttemptsPuk, const std::string& sLockStatus); ICellularRadio::CODE wdsList(std::set &wds); // private variable to save old firmware versions during FOTA std::string m_sTelitFirmware; static const size_t FILE_CHUNK_SIZE; static const std::string CMD_ABORT_UPLOAD; CODE startFotaWriteABD(); CODE abortFotaWriteABD(); static inline void callNextStep(UpdateCb& stepCb, const char* csMessage); static inline void callNextStep(UpdateCb& stepCb, const std::string& sMessage); CODE fumoWaitUpgradeFinished(UpdateCb& stepCb); CODE fumoCheckNewFirmware(UpdateCb& stepCb); }; } } void MTS::IO::TelitRadio::callNextStep(ICellularRadio::UpdateCb& stepCb, const char* csMessage) { if (stepCb) { stepCb(Json::Value(csMessage)); } } void MTS::IO::TelitRadio::callNextStep(ICellularRadio::UpdateCb& stepCb, const std::string& sMessage) { if (stepCb) { stepCb(Json::Value(sMessage)); } } #endif /* MTS_IO_TELITRADIO_H_ */