diff --git a/generated/include/infuse/rpc/types.h b/generated/include/infuse/rpc/types.h index 0ef214a8b..87ec6e96c 100644 --- a/generated/include/infuse/rpc/types.h +++ b/generated/include/infuse/rpc/types.h @@ -173,7 +173,7 @@ struct rpc_struct_wifi_state { /** LTE interface status */ struct rpc_struct_lte_state { - /** Network registration state */ + /** Network registration state (3GPP TS 127.007) */ uint8_t registration_state; /** Access Technology (3GPP TS 127.007) */ uint8_t access_technology; diff --git a/include/infuse/lib/lte_modem_monitor.h b/include/infuse/lib/lte_modem_monitor.h index 806e3c518..4f2c6e47b 100644 --- a/include/infuse/lib/lte_modem_monitor.h +++ b/include/infuse/lib/lte_modem_monitor.h @@ -15,6 +15,8 @@ #include #include +#include + #ifdef __cplusplus extern "C" { #endif @@ -25,49 +27,6 @@ extern "C" { * @{ */ -/** - * Network registration status. - * - * @note Maps directly to the registration status as returned by the AT command `AT+CEREG?`. - */ -enum lte_registration_status { - /** Not registered. UE is not currently searching for an operator to register to. */ - LTE_REGISTRATION_NOT_REGISTERED = 0, - /** Registered, home network. */ - LTE_REGISTRATION_REGISTERED_HOME = 1, - /** - * Not registered, but UE is currently trying to attach or searching for an operator to - * register to. - */ - LTE_REGISTRATION_SEARCHING = 2, - /** Registration denied. */ - LTE_REGISTRATION_REGISTRATION_DENIED = 3, - /** Unknown, for example out of LTE coverage. */ - LTE_REGISTRATION_UNKNOWN = 4, - /** Registered, roaming. */ - LTE_REGISTRATION_REGISTERED_ROAMING = 5, - /** Registered for "SMS only", home network. */ - LTE_REGISTRATION_REGISTERED_HOME_SMS_ONLY = 6, - /** Registered for "SMS only", roaming. */ - LTE_REGISTRATION_REGISTERED_ROAMING_SMS_ONLY = 7, - /** Attached for emergency bearer services only */ - LTE_REGISTRATION_ATTACHED_EMERGENCY_ONLY = 7, - /** Not registered due to UICC failure (nRF91 only). */ - LTE_REGISTRATION_NRF91_UICC_FAIL = 90 -}; - -/** - * LTE mode. - */ -enum lte_access_technology { - /** None. */ - LTE_ACCESS_TECH_NONE = 0, - /** LTE-M. */ - LTE_ACCESS_TECH_LTE_M = 7, - /** NB-IoT. */ - LTE_ACCESS_TECH_NB_IOT = 9, -}; - /** * LTE "Radio Resource Control" state. */ @@ -127,9 +86,10 @@ struct lte_edrx_cfg { /** * LTE mode for which the configuration is valid. * - * If the mode is @ref LTE_ACCESS_TECH_NONE, access technology is not using eDRX. + * If the mode is @a CELLULAR_ACCESS_TECHNOLOGY_UNKNOWN, access technology is not using + * eDRX. */ - enum lte_access_technology mode; + enum cellular_access_technology mode; /** eDRX interval in seconds. */ float edrx; @@ -139,8 +99,8 @@ struct lte_edrx_cfg { }; struct lte_modem_network_state { - enum lte_registration_status nw_reg_status; - enum lte_access_technology lte_mode; + enum cellular_registration_status nw_reg_status; + enum cellular_access_technology lte_mode; enum lte_rrc_mode rrc_mode; struct lte_psm_cfg psm_cfg; struct lte_edrx_cfg edrx_cfg; diff --git a/lib/modem_monitor/modem_nrf9x/nrf_modem_monitor.c b/lib/modem_monitor/modem_nrf9x/nrf_modem_monitor.c index 3b210c336..23cc7de66 100644 --- a/lib/modem_monitor/modem_nrf9x/nrf_modem_monitor.c +++ b/lib/modem_monitor/modem_nrf9x/nrf_modem_monitor.c @@ -78,22 +78,23 @@ static struct { } monitor; /* Validate nRF and generic event mappings */ -BUILD_ASSERT(LTE_REGISTRATION_NOT_REGISTERED == - (enum lte_registration_status)LTE_LC_NW_REG_NOT_REGISTERED); -BUILD_ASSERT(LTE_REGISTRATION_REGISTERED_HOME == - (enum lte_registration_status)LTE_LC_NW_REG_REGISTERED_HOME); -BUILD_ASSERT(LTE_REGISTRATION_SEARCHING == (enum lte_registration_status)LTE_LC_NW_REG_SEARCHING); -BUILD_ASSERT(LTE_REGISTRATION_REGISTRATION_DENIED == - (enum lte_registration_status)LTE_LC_NW_REG_REGISTRATION_DENIED); -BUILD_ASSERT(LTE_REGISTRATION_UNKNOWN == (enum lte_registration_status)LTE_LC_NW_REG_UNKNOWN); -BUILD_ASSERT(LTE_REGISTRATION_REGISTERED_ROAMING == - (enum lte_registration_status)LTE_LC_NW_REG_REGISTERED_ROAMING); -BUILD_ASSERT(LTE_REGISTRATION_NRF91_UICC_FAIL == - (enum lte_registration_status)LTE_LC_NW_REG_UICC_FAIL); - -BUILD_ASSERT(LTE_ACCESS_TECH_NONE == (enum lte_access_technology)LTE_LC_LTE_MODE_NONE); -BUILD_ASSERT(LTE_ACCESS_TECH_LTE_M == (enum lte_access_technology)LTE_LC_LTE_MODE_LTEM); -BUILD_ASSERT(LTE_ACCESS_TECH_NB_IOT == (enum lte_access_technology)LTE_LC_LTE_MODE_NBIOT); +BUILD_ASSERT(CELLULAR_REGISTRATION_NOT_REGISTERED == + (enum cellular_registration_status)LTE_LC_NW_REG_NOT_REGISTERED); +BUILD_ASSERT(CELLULAR_REGISTRATION_REGISTERED_HOME == + (enum cellular_registration_status)LTE_LC_NW_REG_REGISTERED_HOME); +BUILD_ASSERT(CELLULAR_REGISTRATION_SEARCHING == + (enum cellular_registration_status)LTE_LC_NW_REG_SEARCHING); +BUILD_ASSERT(CELLULAR_REGISTRATION_DENIED == + (enum cellular_registration_status)LTE_LC_NW_REG_REGISTRATION_DENIED); +BUILD_ASSERT(CELLULAR_REGISTRATION_UNKNOWN == + (enum cellular_registration_status)LTE_LC_NW_REG_UNKNOWN); +BUILD_ASSERT(CELLULAR_REGISTRATION_REGISTERED_ROAMING == + (enum cellular_registration_status)LTE_LC_NW_REG_REGISTERED_ROAMING); + +BUILD_ASSERT(CELLULAR_ACCESS_TECHNOLOGY_E_UTRAN == + (enum cellular_access_technology)LTE_LC_LTE_MODE_LTEM); +BUILD_ASSERT(CELLULAR_ACCESS_TECHNOLOGY_E_UTRAN_NB_S1 == + (enum cellular_access_technology)LTE_LC_LTE_MODE_NBIOT); BUILD_ASSERT(LTE_RRC_MODE_IDLE == (enum lte_rrc_mode)LTE_LC_RRC_MODE_IDLE); BUILD_ASSERT(LTE_RRC_MODE_CONNECTED == (enum lte_rrc_mode)LTE_LC_RRC_MODE_CONNECTED); @@ -157,8 +158,8 @@ static void network_info_update(struct k_work *work) } } - if ((monitor.network_state.nw_reg_status != LTE_REGISTRATION_REGISTERED_HOME) && - (monitor.network_state.nw_reg_status != LTE_REGISTRATION_REGISTERED_ROAMING)) { + if ((monitor.network_state.nw_reg_status != CELLULAR_REGISTRATION_REGISTERED_HOME) && + (monitor.network_state.nw_reg_status != CELLULAR_REGISTRATION_REGISTERED_ROAMING)) { /* No cell information (except for potentially Cell ID and TAC) */ uint32_t id = monitor.network_state.cell.id; uint32_t tac = monitor.network_state.cell.tac; @@ -312,7 +313,11 @@ static void lte_reg_handler(const struct lte_lc_evt *const evt) LOG_DBG(" Mode: %d", evt->edrx_cfg.mode); LOG_DBG(" PTW: %d", (int)evt->edrx_cfg.ptw); LOG_DBG("Interval: %d", (int)evt->edrx_cfg.edrx); - monitor.network_state.edrx_cfg.mode = evt->edrx_cfg.mode; + if (evt->lte_mode == LTE_LC_LTE_MODE_NONE) { + monitor.network_state.edrx_cfg.mode = CELLULAR_ACCESS_TECHNOLOGY_UNKNOWN; + } else { + monitor.network_state.edrx_cfg.mode = evt->edrx_cfg.mode; + } monitor.network_state.edrx_cfg.edrx = evt->edrx_cfg.edrx; monitor.network_state.edrx_cfg.ptw = evt->edrx_cfg.ptw; break; @@ -346,7 +351,11 @@ static void lte_reg_handler(const struct lte_lc_evt *const evt) case LTE_LC_EVT_LTE_MODE_UPDATE: LOG_DBG("LTE_MODE_UPDATE"); LOG_DBG(" Mode: %d", evt->lte_mode); - monitor.network_state.lte_mode = evt->lte_mode; + if (evt->lte_mode == LTE_LC_LTE_MODE_NONE) { + monitor.network_state.lte_mode = CELLULAR_ACCESS_TECHNOLOGY_UNKNOWN; + } else { + monitor.network_state.lte_mode = evt->lte_mode; + } break; case LTE_LC_EVT_MODEM_SLEEP_ENTER: LOG_DBG("MODEM_SLEEP_ENTER"); @@ -567,6 +576,7 @@ int lte_modem_monitor_init(void) /* Initial state */ monitor.network_state.psm_cfg.tau = -1; monitor.network_state.psm_cfg.active_time = -1; + monitor.network_state.edrx_cfg.mode = CELLULAR_ACCESS_TECHNOLOGY_UNKNOWN; monitor.network_state.edrx_cfg.edrx = -1.0f; monitor.network_state.edrx_cfg.ptw = -1.0f; monitor.rsrp_cached = INT16_MIN; diff --git a/scripts/west_commands/cloud_definitions/rpc.json b/scripts/west_commands/cloud_definitions/rpc.json index 7369d3af4..2bd919a7b 100644 --- a/scripts/west_commands/cloud_definitions/rpc.json +++ b/scripts/west_commands/cloud_definitions/rpc.json @@ -73,7 +73,7 @@ "rpc_struct_lte_state": { "description": "LTE interface status", "fields": [ - {"name": "registration_state", "type": "uint8_t", "description": "Network registration state"}, + {"name": "registration_state", "type": "uint8_t", "description": "Network registration state (3GPP TS 127.007)"}, {"name": "access_technology", "type": "uint8_t", "description": "Access Technology (3GPP TS 127.007)"}, {"name": "mcc", "type": "uint16_t", "description": "Mobile Country Code"}, {"name": "mnc", "type": "uint16_t", "description": "Mobile Network Code"}, diff --git a/subsys/validation/validation_flash.c b/subsys/validation/validation_flash.c index 9ccc9672f..136419f17 100644 --- a/subsys/validation/validation_flash.c +++ b/subsys/validation/validation_flash.c @@ -32,6 +32,13 @@ static int write_read_erase_page(const struct device *dev, size_t page, size_t p VALIDATION_REPORT_INFO(TEST, "Testing address %d.%d (0x%08lX)", page, page_offset, write_offset); + /* Ensure page starts erased */ + rc = flash_erase(dev, erase_offset, page_size); + if (rc < 0) { + VALIDATION_REPORT_ERROR(TEST, "flash_erase (%d)", rc); + return rc; + } + /* Fill buffer with random bytes */ sys_rand_get(write_buffer, sizeof(write_buffer)); diff --git a/tests/net/nrf_modem_lib/src/main.c b/tests/net/nrf_modem_lib/src/main.c index ccb2df7c2..614559106 100644 --- a/tests/net/nrf_modem_lib/src/main.c +++ b/tests/net/nrf_modem_lib/src/main.c @@ -221,7 +221,7 @@ ZTEST(infuse_nrf_modem_monitor, test_integration) zassert_equal(PDN_FAM_IPV4V6, default_family); lte_modem_monitor_network_state(&net_state); - zassert_equal(LTE_REGISTRATION_NOT_REGISTERED, net_state.nw_reg_status); + zassert_equal(CELLULAR_REGISTRATION_NOT_REGISTERED, net_state.nw_reg_status); /* Searching for a second */ nrf_modem_lib_sim_send_at("+CEREG: 2,\"702A\",\"08C3BD0C\",7\r\n"); @@ -235,7 +235,7 @@ ZTEST(infuse_nrf_modem_monitor, test_integration) zassert_equal(atoll(CONFIG_INFUSE_NRF_MODEM_LIB_SIM_IMSI), imsi.imsi); lte_modem_monitor_network_state(&net_state); - zassert_equal(LTE_REGISTRATION_SEARCHING, net_state.nw_reg_status); + zassert_equal(CELLULAR_REGISTRATION_SEARCHING, net_state.nw_reg_status); zassert_equal(0x702A, net_state.cell.tac); zassert_equal(0x08C3BD0C, net_state.cell.id); @@ -270,18 +270,18 @@ ZTEST(infuse_nrf_modem_monitor, test_integration) k_sleep(K_SECONDS(1)); lte_modem_monitor_network_state(&net_state); - zassert_equal(LTE_REGISTRATION_REGISTERED_ROAMING, net_state.nw_reg_status); + zassert_equal(CELLULAR_REGISTRATION_REGISTERED_ROAMING, net_state.nw_reg_status); zassert_equal(0x702A, net_state.cell.tac); zassert_equal(0x08C3BD0C, net_state.cell.id); zassert_equal(103, net_state.cell.phys_cell_id); zassert_equal(505, net_state.cell.mcc); zassert_equal(1, net_state.cell.mnc); zassert_equal(9410, net_state.cell.earfcn); - zassert_equal(LTE_ACCESS_TECH_LTE_M, net_state.lte_mode); + zassert_equal(CELLULAR_ACCESS_TECHNOLOGY_E_UTRAN, net_state.lte_mode); zassert_equal(28, net_state.band); zassert_equal(16, net_state.psm_cfg.active_time); zassert_equal(46800, net_state.psm_cfg.tau); - zassert_equal(0, net_state.edrx_cfg.mode); + zassert_equal(CELLULAR_ACCESS_TECHNOLOGY_UNKNOWN, net_state.edrx_cfg.mode); zassert_equal(-1.0f, net_state.edrx_cfg.edrx); zassert_equal(-1.0f, net_state.edrx_cfg.ptw); @@ -304,7 +304,7 @@ ZTEST(infuse_nrf_modem_monitor, test_integration) nrf_modem_lib_sim_send_at("+CEDRXP: 4,\"0001\",\"0001\",\"0001\"\r\n"); k_sleep(K_SECONDS(1)); lte_modem_monitor_network_state(&net_state); - zassert_equal(LTE_ACCESS_TECH_LTE_M, net_state.edrx_cfg.mode); + zassert_equal(CELLULAR_ACCESS_TECHNOLOGY_E_UTRAN, net_state.edrx_cfg.mode); zassert_within(10.24f, net_state.edrx_cfg.edrx, 0.01f); zassert_within(2.56f, net_state.edrx_cfg.ptw, 0.01f); @@ -355,7 +355,7 @@ ZTEST(infuse_nrf_modem_monitor, test_integration) k_sleep(K_SECONDS(2)); lte_modem_monitor_network_state(&net_state); - zassert_equal(LTE_ACCESS_TECH_NB_IOT, net_state.lte_mode); + zassert_equal(CELLULAR_ACCESS_TECHNOLOGY_E_UTRAN_NB_S1, net_state.lte_mode); zassert_equal(0x702B, net_state.cell.tac); zassert_equal(0x08C3BD0D, net_state.cell.id); diff --git a/west.yml b/west.yml index a93afd1a2..332a26f1d 100644 --- a/west.yml +++ b/west.yml @@ -12,7 +12,7 @@ manifest: projects: - name: zephyr - revision: 0d3f625a5a7b7bb7cc2628f4efb8a6135cf27927 + revision: 8dcf7ccb9021ac78b4fd64a9fb7ac7eef2380072 # Limit imported repositories to reduce clone time import: name-allowlist: