aboutsummaryrefslogtreecommitdiffstats
path: root/src/gsm/gsm0411_utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gsm/gsm0411_utils.c')
-rw-r--r--src/gsm/gsm0411_utils.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/gsm/gsm0411_utils.c b/src/gsm/gsm0411_utils.c
index 5076ec82..ebde8fca 100644
--- a/src/gsm/gsm0411_utils.c
+++ b/src/gsm/gsm0411_utils.c
@@ -25,6 +25,7 @@
*
*/
+#include "../../config.h"
#include <time.h>
#include <string.h>
@@ -80,7 +81,12 @@ void gsm340_gen_scts(uint8_t *scts, time_t time)
*scts++ = gsm411_bcdify(tm->tm_hour);
*scts++ = gsm411_bcdify(tm->tm_min);
*scts++ = gsm411_bcdify(tm->tm_sec);
- *scts++ = gsm411_bcdify(0); /* GMT */
+#ifdef HAVE_TM_GMTOFF_IN_TM
+ *scts++ = gsm411_bcdify(tm->tm_gmtoff/(60*15));
+#else
+#warning find a portable way to obtain timezone offset
+ *scts++ = 0;
+#endif
}
/* Decode 03.40 TP-SCTS (into utc/gmt timestamp) */
@@ -101,6 +107,9 @@ time_t gsm340_scts(uint8_t *scts)
tm.tm_hour = gsm411_unbcdify(*scts++);
tm.tm_min = gsm411_unbcdify(*scts++);
tm.tm_sec = gsm411_unbcdify(*scts++);
+#ifdef HAVE_TM_GMTOFF_IN_TM
+ tm.tm_gmtoff = gsm411_unbcdify(*scts++) * 15*60;
+#endif
/* according to gsm 03.40 time zone is
"expressed in quarters of an hour" */