Skip to content

Commit 3c293c5

Browse files
authored
lte/alt1250: Fix bug that callbacks were called at unexpected timing
2 parents 1848dd5 + e713e7b commit 3c293c5

File tree

1 file changed

+21
-41
lines changed

1 file changed

+21
-41
lines changed

lte/alt1250/callback_handlers/alt1250_evt.c

Lines changed: 21 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@
5151
{ .cmdid = LTE_CMDID_##cid, .altcid = APICMDID_##acid, \
5252
.outparam = outp, .outparamlen = ARRAY_SZ(outp) }
5353

54+
#define TABLE_CONTENT_NOARG(cid, acid) \
55+
{ .cmdid = LTE_CMDID_##cid, .altcid = APICMDID_##acid, \
56+
.outparam = NULL, .outparamlen = 0 }
57+
5458
#define NCBTABLES (8 + ALTCOM_NSOCKET) /* 8 is the maximum number of events */
5559

5660
#define IS_REPORT_API(cmdid) \
@@ -130,8 +134,6 @@ static uint64_t lte_set_report_simstat_exec_cb(FAR void *cb,
130134
FAR void **cbarg, FAR bool *set_writable);
131135
static uint64_t lte_set_report_localtime_exec_cb(FAR void *cb,
132136
FAR void **cbarg, FAR bool *set_writable);
133-
static uint64_t lte_set_reportevt_exec_cb(FAR void *cb, FAR void **cbarg,
134-
FAR bool *set_writable);
135137
static uint64_t lte_set_report_quality_exec_cb(FAR void *cb,
136138
FAR void **cbarg, FAR bool *set_writable);
137139
static uint64_t lte_set_report_cellinfo_exec_cb(FAR void *cb,
@@ -514,14 +516,20 @@ static void *g_repnetinfoargs[] =
514516
&g_repnetinfo, &g_ndnsaddrs, g_dnsaddrs
515517
};
516518

517-
/* event argument for LTE_CMDID_REPSIMSTAT and LTE_CMDID_REPLTIME */
519+
/* event argument for LTE_CMDID_REPSIMSTAT */
518520

519-
static uint8_t g_repevtflag;
520521
static uint32_t g_repsimstat;
522+
static void *g_repsimstatargs[] =
523+
{
524+
&g_repsimstat
525+
};
526+
527+
/* event argument for LTE_CMDID_REPLTIME */
528+
521529
static lte_localtime_t g_repltime;
522-
static void *g_repevtargs[] =
530+
static void *g_repltimeargs[] =
523531
{
524-
&g_repevtflag, &g_repsimstat, &g_repltime
532+
&g_repltime
525533
};
526534

527535
/* event argument for LTE_CMDID_REPQUAL */
@@ -674,8 +682,9 @@ static struct alt_evtbuf_inst_s g_evtbuffers[] =
674682
TABLE_CONTENT(SETRAT, SET_RAT, g_setratargs),
675683
TABLE_CONTENT(GETRATINFO, GET_RAT, g_getratinfoargs),
676684
TABLE_CONTENT(REPNETINFO, REPORT_NETINFO, g_repnetinfoargs),
677-
TABLE_CONTENT(REPSIMSTAT, REPORT_EVT, g_repevtargs),
678-
TABLE_CONTENT(REPLTIME, REPORT_EVT, g_repevtargs),
685+
TABLE_CONTENT_NOARG(REPEVT_DUMMY, REPORT_EVT),
686+
TABLE_CONTENT(REPSIMSTAT, UNKNOWN, g_repsimstatargs),
687+
TABLE_CONTENT(REPLTIME, UNKNOWN, g_repltimeargs),
679688
TABLE_CONTENT(REPQUAL, REPORT_QUALITY, g_repqualargs),
680689
TABLE_CONTENT(REPCELL, REPORT_CELLINFO, g_repcellargs),
681690
TABLE_CONTENT(GETERRINFO, ERRINFO, g_geterrinfoargs),
@@ -685,10 +694,7 @@ static struct alt_evtbuf_inst_s g_evtbuffers[] =
685694

686695
/* For Unsolicited event */
687696

688-
{
689-
.cmdid = LTE_CMDID_LWM2M_URC_DUMMY, .altcid = APICMDID_URC_EVENT,
690-
.outparam = NULL, .outparamlen = 0
691-
},
697+
TABLE_CONTENT_NOARG(LWM2M_URC_DUMMY, URC_EVENT),
692698
TABLE_CONTENT(LWM2M_READ_EVT, UNKNOWN, g_lwm2mreadargs),
693699
TABLE_CONTENT(LWM2M_WRITE_EVT, UNKNOWN, g_lwm2mwriteargs),
694700
TABLE_CONTENT(LWM2M_EXEC_EVT, UNKNOWN, g_lwm2mexecargs),
@@ -702,10 +708,7 @@ static struct alt_evtbuf_inst_s g_evtbuffers[] =
702708
* The output parameter is NULL since a container for select is used.
703709
*/
704710

705-
{
706-
.cmdid = LTE_CMDID_SELECT, .altcid = APICMDID_SOCK_SELECT,
707-
.outparam = NULL, .outparamlen = 0
708-
}
711+
TABLE_CONTENT_NOARG(SELECT, SOCK_SELECT)
709712
};
710713

711714
static struct cbinfo_s g_execbtable[] =
@@ -742,8 +745,8 @@ static struct cbinfo_s g_execbtable[] =
742745
{LTE_CMDID_GETQUAL, lte_get_quality_exec_cb},
743746
#endif /* CONFIG_LTE_LAPI_ENABLE_DEPRECATED_API */
744747
{LTE_CMDID_REPNETINFO, lte_set_report_netinfo_exec_cb},
745-
{LTE_CMDID_REPSIMSTAT, lte_set_reportevt_exec_cb},
746-
{LTE_CMDID_REPLTIME, lte_set_reportevt_exec_cb},
748+
{LTE_CMDID_REPSIMSTAT, lte_set_report_simstat_exec_cb},
749+
{LTE_CMDID_REPLTIME, lte_set_report_localtime_exec_cb},
747750
{LTE_CMDID_REPQUAL, lte_set_report_quality_exec_cb},
748751
{LTE_CMDID_REPCELL, lte_set_report_cellinfo_exec_cb},
749752
{LTE_CMDID_TLS_CONFIG_VERIFY, tls_config_verify_exec_cb},
@@ -1264,29 +1267,6 @@ static uint64_t lte_set_report_localtime_exec_cb(FAR void *cb,
12641267
return 0ULL;
12651268
}
12661269

1267-
static uint64_t lte_set_reportevt_exec_cb(FAR void *cb, FAR void **cbarg,
1268-
FAR bool *set_writable)
1269-
{
1270-
FAR void *func = NULL;
1271-
uint8_t flag = *((FAR uint8_t *)cbarg[0]);
1272-
1273-
if (flag & ALTCOM_REPEVT_FLAG_SIMSTAT)
1274-
{
1275-
flag &= ~ALTCOM_REPEVT_FLAG_SIMSTAT;
1276-
func = get_cbfunc(LTE_CMDID_REPSIMSTAT);
1277-
lte_set_report_simstat_exec_cb(func, &cbarg[1], set_writable);
1278-
}
1279-
1280-
if (flag & ALTCOM_REPEVT_FLAG_LTIME)
1281-
{
1282-
flag &= ~ALTCOM_REPEVT_FLAG_LTIME;
1283-
func = get_cbfunc(LTE_CMDID_REPLTIME);
1284-
lte_set_report_localtime_exec_cb(func, &cbarg[2], set_writable);
1285-
}
1286-
1287-
return 0ULL;
1288-
}
1289-
12901270
static uint64_t lte_set_report_quality_exec_cb(FAR void *cb,
12911271
FAR void **cbarg, FAR bool *set_writable)
12921272
{

0 commit comments

Comments
 (0)