Exportable version of WizziLab's modem driver.

Dependents:   modem_ref_helper

Revision:
41:6f83174ffed4
Parent:
40:62b7f6d25772
Child:
42:87bf0654cb7b
--- a/include/alp_spec.h	Fri Oct 12 12:37:16 2018 +0000
+++ b/include/alp_spec.h	Mon Nov 26 16:42:16 2018 +0000
@@ -157,6 +157,7 @@
     ALP_ERR_ITF_INVALID                 = -13,// 0xF3: Error invalid interface
     ALP_ERR_ITF_OVERFLOW                = -14,// 0xF2: Error interface overflown (i.e. resources exhausted, buffer full with data discarded)
     ALP_ERR_QUERY_FAIL                  = -15,// 0xF1: (Group of) Query result was false (Informative error code).
+    ALP_ERR_ITF_NOT_READY               = -16,// 0xF0: Error interface is not ready
 
     ALP_ERR_ITF_START                   = -64,// 0xC0: Interface specific error, start range
     ALP_ERR_ITF_END                     = -96,// 0xA0: Interface specific error, end range
@@ -212,10 +213,16 @@
     ALP_URC_TYPE_LQUAL                  = 0,
     /// Enable Link Down (on IFID) URCs on requesting ITF
     ALP_URC_TYPE_LDOWN                  = 1,
+    /// Enable system/modem URC 
+    /// XXX Could enable subtypes, but API does not allow it
+    ALP_URC_TYPE_BUSY                   = 2,
+    /// Enable Interface BUSY messages
+    ALP_URC_TYPE_ITF_BUSY               = 3,
+    /// XXX system/modem URC with parameter
+    // ALP_URC_TYPE_SYS
 
     ALP_URC_TYPE_QTY,
 
-    ALP_URC_TYPE_BUSY                   = 2, // XXX TODO this is awkward: BUSY is not an ITF-URC but a system/modem URC
 } alp_urc_type_t;
 
 TYPEDEF_STRUCT_PACKED {
@@ -358,21 +365,29 @@
 #define ALP_ACTION_URCC_EN(_p,_r,_type,_ifid,_cfg)  do {\
     *(_p)++ = (_r)?ALP_OPCODE_URCC+ALP_OPCODE_GROUP+ALP_OPCODE_RESP:ALP_OPCODE_URCC+ALP_OPCODE_GROUP;\
     *(_p)++ = (_type);\
-    if((_type)!=ALP_URC_TYPE_NONE && (_type)!=ALP_URC_TYPE_BUSY)\
+    if((_type)==ALP_URC_TYPE_LQUAL || (_type)==ALP_URC_TYPE_LDOWN)\
     {\
         *(_p)++ = (_ifid);\
         *(_p)++ = (_cfg);\
     }\
+    else if((_type)==ALP_URC_TYPE_ITF_BUSY)\
+    {\
+        *(_p)++ = (_ifid);\
+    }\
     } while(0)
 
 #define ALP_ACTION_URCC_DIS(_p,_r,_type,_ifid,_cfg)  do {\
     *(_p)++ = (_r)?ALP_OPCODE_URCC+ALP_OPCODE_RESP:ALP_OPCODE_URCC;\
     *(_p)++ = (_type);\
-    if((_type)!=ALP_URC_TYPE_NONE && (_type)!=ALP_URC_TYPE_BUSY)\
+    if((_type)==ALP_URC_TYPE_LQUAL || (_type)==ALP_URC_TYPE_LDOWN)\
     {\
         *(_p)++ = (_ifid);\
         *(_p)++ = (_cfg);\
     }\
+    else if((_type)==ALP_URC_TYPE_ITF_BUSY)\
+    {\
+        *(_p)++ = (_ifid);\
+    }\
     } while(0)
 
 #define ALP_ACTION_FORWARD_SIZE(s)         (1+(s))