FreeCalypso > hg > freecalypso-tools
view uptools/sms-pdu-decode/pcm-sms-decode.c @ 933:bd6dd6120180
rvinterf: -v enables TM hex dump, -vv enables TCH hex dump
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 23 May 2023 06:24:37 +0000 |
parents | 3a80bfa87496 |
children | 411d1cc14326 |
line wrap: on
line source
#include <sys/types.h> #include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <unistd.h> extern int ascii_ext_mode, global_hexdump_mode; extern u_char pdu[176]; extern unsigned pdu_length; static char *infname; static FILE *inf; static unsigned start_recno; static char *msgtype[4] = {"received", "received unread", "sent", "stored unsent"}; static process_cmdline(argc, argv) char **argv; { int c; extern int optind; while ((c = getopt(argc, argv, "ehsu")) != EOF) switch (c) { case 'e': ascii_ext_mode = 1; continue; case 'h': global_hexdump_mode = 1; continue; case 's': start_recno = 1; continue; case 'u': ascii_ext_mode = 2; continue; default: fprintf(stderr, "%s: invalid option\n", argv[0]); exit(1); } if (argc != optind + 1) { fprintf(stderr, "usage: %s [options] pcm-sms-binfile\n", argv[0]); exit(1); } infname = argv[optind]; } main(argc, argv) char **argv; { u_char record[176]; unsigned recno; process_cmdline(argc, argv); inf = fopen(infname, "r"); if (!inf) { perror(infname); exit(1); } pdu_length = 176; for (recno = start_recno; fread(record, sizeof record, 1, inf); recno++) { if (record[0] & 1) { printf("Record #%u is %s message:\n", recno, msgtype[(record[0] >> 1) & 3]); bcopy(record + 1, pdu, 175); process_pdu(0); putchar('\n'); } else printf("Record #%u is empty\n\n", recno); } exit(0); }