All SDK versions, including the latest v3.2.1
Method int modem_info_short_get(enum modem_info info, uint16_t *buf) has a bug and fails to return the right values when:
1. info = MODEM_INFO_MCC
2. info = MODEM_INFO_MNC
Since 3 of them point to the same data in the modem response, and the right values must be extracted from the operator:
static const struct modem_info_data operator_data = {
.cmd = AT_CMD_CURRENT_OP,
.data_name = OPERATOR_DATA_NAME,
.param_index = OPERATOR_PARAM_INDEX,
.param_count = OPERATOR_PARAM_COUNT,
.data_type = MODEM_INFO_DATA_TYPE_STRING,
};
static const struct modem_info_data mcc_data = {
.cmd = AT_CMD_CURRENT_OP,
.data_name = MCC_DATA_NAME,
.param_index = OPERATOR_PARAM_INDEX,
.param_count = OPERATOR_PARAM_COUNT,
.data_type = MODEM_INFO_DATA_TYPE_NUM_INT,
};
static const struct modem_info_data mnc_data = {
.cmd = AT_CMD_CURRENT_OP,
.data_name = MNC_DATA_NAME,
.param_index = OPERATOR_PARAM_INDEX,
.param_count = OPERATOR_PARAM_COUNT,
.data_type = MODEM_INFO_DATA_TYPE_NUM_INT,
};
Like it is done in int modem_info_params_get(struct modem_param_info *modem) with mcc_mnc_parse() function