diff options
author | tick <tick@99fdad57-331a-0410-800a-d7fa5415bdb3> | 2007-11-16 08:55:01 +0000 |
---|---|---|
committer | tick <tick@99fdad57-331a-0410-800a-d7fa5415bdb3> | 2007-11-16 08:55:01 +0000 |
commit | 5e9fde8743d4d3d733303bef99e20000c0769148 (patch) | |
tree | 2f094302f9bbdc74a5e599c509215fa4c82aa7c0 /include/gsmd | |
parent | cd687c0c2f3e9a77d344d8806d0072cc8fb8084a (diff) |
[gsmd] Adding timeout scheme, and merge gta01 wakeup scheme as machine plug-in with timeout. (L. Sean)
git-svn-id: http://svn.openmoko.org/trunk/src/target/gsm@3430 99fdad57-331a-0410-800a-d7fa5415bdb3
Diffstat (limited to 'include/gsmd')
-rw-r--r-- | include/gsmd/atcmd.h | 5 | ||||
-rw-r--r-- | include/gsmd/gsmd.h | 7 | ||||
-rw-r--r-- | include/gsmd/machineplugin.h | 1 |
3 files changed, 10 insertions, 3 deletions
diff --git a/include/gsmd/atcmd.h b/include/gsmd/atcmd.h index 719b943..e328934 100644 --- a/include/gsmd/atcmd.h +++ b/include/gsmd/atcmd.h @@ -7,11 +7,14 @@ typedef int atcmd_cb_t(struct gsmd_atcmd *cmd, void *ctx, char *resp); -extern struct gsmd_atcmd *atcmd_fill(const char *cmd, int rlen, atcmd_cb_t *cb, void *ctx, u_int16_t id); +extern struct gsmd_atcmd *atcmd_fill(const char *cmd, int rlen, atcmd_cb_t *cb, void *ctx, u_int16_t id, + create_timer_t ct); extern int atcmd_submit(struct gsmd *g, struct gsmd_atcmd *cmd); extern int cancel_atcmd(struct gsmd *g, struct gsmd_atcmd *cmd); extern int atcmd_init(struct gsmd *g, int sockfd); extern void atcmd_drain(int fd); +extern void atcmd_wake_pending_queue (struct gsmd *g); +extern void atcmd_wait_pending_queue (struct gsmd *g); #endif /* __GSMD__ */ diff --git a/include/gsmd/gsmd.h b/include/gsmd/gsmd.h index c511fc3..5b2a9e6 100644 --- a/include/gsmd/gsmd.h +++ b/include/gsmd/gsmd.h @@ -19,6 +19,7 @@ void *gsmd_tallocs; #define LGSM_ATCMD_F_PARAM 0x02 /* as opposed to action */ #define LGSM_ATCMD_F_LFCR 0x04 /* accept LFCR as a line terminator */ +typedef struct gsmd_timer * (create_timer_t)(struct gsmd *data); struct gsmd_atcmd { struct llist_head list; void *ctx; @@ -28,6 +29,8 @@ struct gsmd_atcmd { u_int32_t buflen; u_int16_t id; u_int8_t flags; + struct gsmd_timer *timeout; + create_timer_t * create_timer_func; char *cur; char buf[]; }; @@ -67,7 +70,7 @@ struct gsmd; #define GSMD_FLAG_V0 0x0001 /* V0 responses to be expected from TA */ #define GSMD_FLAG_SMS_FMT_TEXT 0x0002 /* TODO Use TEXT rather than PDU mode */ -#define GSMD_MODEM_WAKEUP_TIMEOUT 3 +#define GSMD_ATCMD_TIMEOUT 60 /* If doesn get respond within 60 secs, discard */ struct gsmd { unsigned int flags; @@ -86,7 +89,7 @@ struct gsmd { unsigned char *mlbuf; /* ml_parse buffer */ unsigned int mlbuf_len; int mlunsolicited; - struct gsmd_timer *wakeup_timer; + int alive_responded; }; struct gsmd_user { diff --git a/include/gsmd/machineplugin.h b/include/gsmd/machineplugin.h index aee5d65..7a66031 100644 --- a/include/gsmd/machineplugin.h +++ b/include/gsmd/machineplugin.h @@ -11,6 +11,7 @@ struct gsmd; struct gsmd_machine_plugin { struct llist_head list; unsigned char *name; + int (*ex_submit)(struct gsmd *g); int (*detect)(struct gsmd *g); int (*init)(struct gsmd *g, int fd); }; |