From cd38d7c7d4710159b86ca5ed1557b46bba41d2ca Mon Sep 17 00:00:00 2001 From: kutayboz Date: Wed, 2 Aug 2023 19:36:09 +0300 Subject: Config file parsing and generalized functions WIP --- src/main.c | 84 ++++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 32 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index 13b0b3f..aecc820 100644 --- a/src/main.c +++ b/src/main.c @@ -7,7 +7,7 @@ #include "bg96.h" #include "utils.h" -struct structCfg dataCfg = {NULL, NULL, -1, -1}; +listCfgData cfgData = {NULL, NULL}; int main(int argc, char **argv) { @@ -16,12 +16,12 @@ int main(int argc, char **argv) { return 1; } - if (readCfg(&dataCfg, argv[0]) != 0) { + if (readCfg(cfgData, argv[0]) != 0) { printf("Error reading the config file.\n"); return 1; } - if (0 == strcmp(argv[1], "--initpublic")) { + /* if (0 == strcmp(argv[1], "--initpublic")) { printf("Powering on\n"); if (0 != powerOn(dataCfg.pathSerialPort, dataCfg.pathGpioChip, @@ -39,7 +39,7 @@ int main(int argc, char **argv) { } printf("Configuring the network settings for DNA public network\n"); - if (0 != cfgPublicNetwork(dataCfg.pathSerialPort)) { + if (0 != configureNetwork(dataCfg.pathSerialPort)) { printf("Error setting public network configuration\n"); freeCfgData(&dataCfg); return 1; @@ -55,65 +55,82 @@ int main(int argc, char **argv) { printf("Initialization complete\n"); freeCfgData(&dataCfg); return 0; - } + } */ - else if (0 == strcmp(argv[1], "--init6GTN")) { + if (0 == strcmp(argv[1], "--initConnection")) { printf("Powering on\n"); - if (0 != powerOn(dataCfg.pathSerialPort, dataCfg.pathGpioChip, - dataCfg.pinStatus, dataCfg.pinPwrKey)) { + if (0 != powerOn(cfgData.strDataList[PATH_TO_SERIAL_PORT_POS].value, + cfgData.strDataList[PATH_TO_GPIO_CHIP_POS].value, + cfgData.intDataList[PIN_STATUS_POS].value, + cfgData.intDataList[PIN_PWR_KEY_POS].value)) { printf("Error powering the module on\n"); - freeCfgData(&dataCfg); + freeCfgData(cfgData); return 1; } printf("Initiating GNSS\n"); - if (0 != initGNSS(dataCfg.pathSerialPort)) { + if (0 != initGNSS(cfgData.strDataList[PATH_TO_SERIAL_PORT_POS].value)) { printf("Error initiating GNSS\n"); - freeCfgData(&dataCfg); + freeCfgData(cfgData); return 1; } - printf("Configuring the network settings for 6GTN\n"); - if (0 != cfg6GTN(dataCfg.pathSerialPort)) { - printf("Error setting 6GTN network configuration\n"); - freeCfgData(&dataCfg); + printf("Configuring the network settings\n"); + if (0 != + configureNetwork(cfgData.strDataList[PATH_TO_SERIAL_PORT_POS].value)) { + printf("Error setting network configuration\n"); + freeCfgData(cfgData); return 1; } + if (1 /*DETAILS*/) { + printf("Defining operator and PDP context\n"); + if (0 != + defineNetworkDetails( + cfgData.strDataList[PATH_TO_SERIAL_PORT_POS].value /* , 120 */)) { + printf("Error defining operator and PDP context\n"); + freeCfgData(cfgData); + return 1; + } + } + printf("Waiting for establishing network connection\n"); - if (0 != connect6GTN(dataCfg.pathSerialPort, 120)) { - printf("Error while connecting to 6GTN\n"); - freeCfgData(&dataCfg); + if (0 != waitForNetwork(cfgData.strDataList[PATH_TO_SERIAL_PORT_POS].value, + 120)) { + printf("Error while waiting for network connection\n"); + freeCfgData(cfgData); return 1; } printf("Initialization complete\n"); - freeCfgData(&dataCfg); + freeCfgData(cfgData); return 0; } else if (0 == strcmp(argv[1], "--stop")) { printf("Stopping GNSS\n"); - if (0 != stopGNSS(dataCfg.pathSerialPort)) { + if (0 != stopGNSS(cfgData.strDataList[PATH_TO_SERIAL_PORT_POS].value)) { printf("Error stopping GNSS\n"); } printf("Disconnecting MQTT\n"); - if (0 != mqttDisc(dataCfg.pathSerialPort)) { + if (0 != mqttDisc(cfgData.strDataList[PATH_TO_SERIAL_PORT_POS].value)) { printf("Could not disconnect MQTT\n"); } printf("Powering off\n"); - if (0 != powerOff(dataCfg.pathSerialPort, dataCfg.pathGpioChip, - dataCfg.pinStatus, dataCfg.pinPwrKey)) { + if (0 != powerOff(cfgData.strDataList[PATH_TO_SERIAL_PORT_POS].value, + cfgData.strDataList[PATH_TO_GPIO_CHIP_POS].value, + cfgData.intDataList[PIN_STATUS_POS].value, + cfgData.intDataList[PIN_PWR_KEY_POS].value)) { printf("Error powering the module off\n"); - freeCfgData(&dataCfg); + freeCfgData(cfgData); return 1; } printf("Power off complete\n"); - freeCfgData(&dataCfg); + freeCfgData(cfgData); return 0; } @@ -122,26 +139,29 @@ int main(int argc, char **argv) { printf("Obtaining network info\n"); initNetworkData(nD); - if (gatherData(nD, dataCfg.pathSerialPort) != 0) { + if (gatherData(nD, cfgData.strDataList[PATH_TO_SERIAL_PORT_POS].value) != + 0) { printf("Failed to gather network info\n"); goto netinfopubFail; } printf("Connecting to the MQTT broker\n"); - if (0 != mqttConn(dataCfg.pathSerialPort, "io.adafruit.com", 8883, "kboz", + if (0 != mqttConn(cfgData.strDataList[PATH_TO_SERIAL_PORT_POS].value, + "io.adafruit.com", 8883, "kboz", "aio_lvhz87FJ0rIlidH8g30V5mQ7FK7s")) { printf("Error connecting MQTT\n"); goto netinfopubFail; } printf("Publishing network information\n"); - if (0 != mqttPubNetData(dataCfg.pathSerialPort, *nD)) { + if (0 != mqttPubNetData(cfgData.strDataList[PATH_TO_SERIAL_PORT_POS].value, + *nD)) { printf("Error publishing to MQTT server\n"); goto netinfopubFail; } printf("Disconnecting from the MQTT broker\n"); - if (0 != mqttDisc(dataCfg.pathSerialPort)) { + if (0 != mqttDisc(cfgData.strDataList[PATH_TO_SERIAL_PORT_POS].value)) { printf("Could not disconnect MQTT\n"); goto netinfopubFail; } @@ -149,19 +169,19 @@ int main(int argc, char **argv) { printf("Network info publish complete\n"); freeNetworkData(nD); free(nD); - freeCfgData(&dataCfg); + freeCfgData(cfgData); return 0; netinfopubFail: freeNetworkData(nD); free(nD); - freeCfgData(&dataCfg); + freeCfgData(cfgData); return 1; } else { printf("Unknown arguments\n"); - freeCfgData(&dataCfg); + freeCfgData(cfgData); return 1; } } -- cgit v1.3