summaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/main.cpp b/main.cpp
index 3ec00db..c2324b7 100644
--- a/main.cpp
+++ b/main.cpp
@@ -71,6 +71,7 @@ Json::Value g_jData;
std::string g_sSimPin;
std::string g_sCellularMode;
std::string g_sDeltaFwPath;
+std::string g_sUEOperationMode;
MTS::AutoPtr<MTS::IO::ICellularRadio> g_apRadio;
@@ -110,6 +111,7 @@ const uint32_t OPT_CONFIG_FILE = 0x04000000;
const uint32_t OPT_SET_CELLULAR_MODE = 0x08000000;
const uint32_t OPT_UNLOCK_SIM_CARD = 0x20000000;
const uint32_t OPT_RESET_RADIO = 0x40000000;
+const uint32_t OPT_SET_UE_OPERATION_MODE = 0x80000000;
int32_t g_iAuxOptions = 0;
const uint32_t AOPT_OMA_DM_START = 0x00000001;
@@ -125,6 +127,7 @@ void shutdown();
const char *code2str(MTS::IO::ICellularRadio::CODE code);
std::string loadImeiFromDeviceInfo();
MTS::IO::ICellularRadio::CELLULAR_MODES cellularModeFlags(const std::string networks);
+MTS::IO::ICellularRadio::UE_MODES_OF_OPERATION ueModesOfOperation(const std::string& mode);
static int iOption = 0;
@@ -164,6 +167,7 @@ static struct option long_options[] = {
{ "delta-fwu-upload", required_argument, 0, 'x' },
{ "delta-fwu-apply", no_argument, 0, 'A' },
{ "init-fumo-local", required_argument, 0, 'F' },
+ { "set-ue-mode-of-operation",required_argument, 0, 'U' },
{ 0, 0, 0, 0 }
};
@@ -408,6 +412,14 @@ int main(int argc, char** argv) {
result = g_apRadio->fumoLocalApply(cb);
} else if (g_iAuxOptions & AOPT_FUMO_LOCAL) {
result = handleFumoLocal(g_sDeltaFwPath);
+ } else if (g_iOptions & OPT_SET_UE_OPERATION_MODE) {
+ ICellularRadio::UE_MODES_OF_OPERATION mode = ueModesOfOperation(g_sUEOperationMode);
+ if (mode != ICellularRadio::UNKNOWN_MODE) {
+ result = g_apRadio->setUeModeOfOperation(mode);
+ printf("%s\n", code2str(result));
+ } else {
+ printf("Invalid argument: %s\n", g_sUEOperationMode.c_str());
+ }
}
shutdown();
@@ -648,6 +660,12 @@ void parseOptions(int argc, char** argv)
g_iAuxOptions |= AOPT_FUMO_LOCAL;
break;
+ case 'U':
+ if (optarg)
+ g_sUEOperationMode = optarg;
+ g_iOptions |= OPT_SET_UE_OPERATION_MODE;
+ break;
+
default:
printf("OPTION: [%d] ABORTING!!\n", c);
abort();
@@ -693,6 +711,7 @@ void printHelp(const std::string& sApp) {
printf("\t--set-mip-mn-ha-ss <VAL> : set MIP MN HA SS\n");
printf("\t--set-rx-diversity <VAL> : set RX Diversity\n");
printf("\t--set-cellular-mode : set preferred networks eg. 2g,3g,4g\n");
+ printf("\t--set-ue-mode-of-operation <MODE> : set the UE mode of operation: ps_1, ps_2, csps_1, csps_2\n");
// Applicable for LTE910-NA1 dual FW images only
// printf("\t--set-active-firmware <VAL> : switch to a specific firmware image\n");
printf("\t--factory-default [ --msl <MSL> ] : reset to factory defaults\n");
@@ -752,6 +771,23 @@ MTS::IO::ICellularRadio::CELLULAR_MODES cellularModeFlags(const std::string netw
return static_cast<ICellularRadio::CELLULAR_MODES>(result);
}
+MTS::IO::ICellularRadio::UE_MODES_OF_OPERATION ueModesOfOperation(const std::string& mode) {
+ using namespace MTS::IO;
+ int result;
+ if (mode == "ps_1") {
+ result = ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE1;
+ } else if (mode == "ps_2") {
+ result = ICellularRadio::UE_MODES_OF_OPERATION::PS_MODE2;
+ } else if (mode == "csps_1") {
+ result = ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE1;
+ } else if (mode == "csps_2") {
+ result = ICellularRadio::UE_MODES_OF_OPERATION::CS_PS_MODE2;
+ } else {
+ result = ICellularRadio::UNKNOWN_MODE;
+ }
+ return static_cast<ICellularRadio::UE_MODES_OF_OPERATION>(result);
+}
+
MTS::IO::ICellularRadio::CODE handleDeltaFwUpload(const std::string& sPath) {
int fd = open(sPath.c_str(), O_RDONLY);
if (fd < 0) {