Base library for cellular modem implementations

Dependencies:   Socket lwip-sys lwip

Dependents:   CellularUSBModem CellularUSBModem

Deprecated

This is an mbed 2 networking library. For mbed 5, the networking libraries have been revised to better support additional network stacks and thread safety here.

Committer:
mbed_official
Date:
Thu May 08 11:00:26 2014 +0100
Revision:
8:944cd194963e
Parent:
1:4a23efdf0da9
Synchronized with git revision df12bf01ac7dbb50751e2b16a351c894994e1dcf

Full URL: https://github.com/mbedmicro/mbed/commit/df12bf01ac7dbb50751e2b16a351c894994e1dcf/

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 1:4a23efdf0da9 1 /* dbg.cpp */
bogdanm 1:4a23efdf0da9 2 /* Copyright (C) 2012 mbed.org, MIT License
bogdanm 1:4a23efdf0da9 3 *
bogdanm 1:4a23efdf0da9 4 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
bogdanm 1:4a23efdf0da9 5 * and associated documentation files (the "Software"), to deal in the Software without restriction,
bogdanm 1:4a23efdf0da9 6 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
bogdanm 1:4a23efdf0da9 7 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
bogdanm 1:4a23efdf0da9 8 * furnished to do so, subject to the following conditions:
bogdanm 1:4a23efdf0da9 9 *
bogdanm 1:4a23efdf0da9 10 * The above copyright notice and this permission notice shall be included in all copies or
bogdanm 1:4a23efdf0da9 11 * substantial portions of the Software.
bogdanm 1:4a23efdf0da9 12 *
bogdanm 1:4a23efdf0da9 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
bogdanm 1:4a23efdf0da9 14 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
bogdanm 1:4a23efdf0da9 15 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
bogdanm 1:4a23efdf0da9 16 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
bogdanm 1:4a23efdf0da9 17 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
bogdanm 1:4a23efdf0da9 18 */
bogdanm 1:4a23efdf0da9 19
bogdanm 1:4a23efdf0da9 20 #include "dbg.h"
bogdanm 1:4a23efdf0da9 21
bogdanm 1:4a23efdf0da9 22 #include "mbed.h"
bogdanm 1:4a23efdf0da9 23 #include "rtos.h"
bogdanm 1:4a23efdf0da9 24
bogdanm 1:4a23efdf0da9 25 #include <cstdio>
bogdanm 1:4a23efdf0da9 26 #include <cstdarg>
bogdanm 1:4a23efdf0da9 27
bogdanm 1:4a23efdf0da9 28 using namespace std;
bogdanm 1:4a23efdf0da9 29
bogdanm 1:4a23efdf0da9 30 static Serial debug_pc(USBTX, USBRX);
bogdanm 1:4a23efdf0da9 31
bogdanm 1:4a23efdf0da9 32 static char debug_newline[3];
bogdanm 1:4a23efdf0da9 33
bogdanm 1:4a23efdf0da9 34 static void debug_lock(bool set)
bogdanm 1:4a23efdf0da9 35 {
bogdanm 1:4a23efdf0da9 36 static Mutex* mtx = new Mutex(); //Singleton runtime initialisation to avoid static initialisation chaos problems
bogdanm 1:4a23efdf0da9 37 static bool init = false;
bogdanm 1:4a23efdf0da9 38 if(set)
bogdanm 1:4a23efdf0da9 39 {
bogdanm 1:4a23efdf0da9 40 mtx->lock();
bogdanm 1:4a23efdf0da9 41 if(!init)
bogdanm 1:4a23efdf0da9 42 {
bogdanm 1:4a23efdf0da9 43 strncpy( debug_newline, "\n", 2 );
bogdanm 1:4a23efdf0da9 44 printf("[START]\n");
bogdanm 1:4a23efdf0da9 45 fflush(stdout);
bogdanm 1:4a23efdf0da9 46 init = true;
bogdanm 1:4a23efdf0da9 47 }
bogdanm 1:4a23efdf0da9 48 }
bogdanm 1:4a23efdf0da9 49 else
bogdanm 1:4a23efdf0da9 50 {
bogdanm 1:4a23efdf0da9 51 mtx->unlock();
bogdanm 1:4a23efdf0da9 52 }
bogdanm 1:4a23efdf0da9 53 }
bogdanm 1:4a23efdf0da9 54
bogdanm 1:4a23efdf0da9 55 void debug_init()
bogdanm 1:4a23efdf0da9 56 {
bogdanm 1:4a23efdf0da9 57 debug_lock(true); //Force init
bogdanm 1:4a23efdf0da9 58 debug_lock(false);
bogdanm 1:4a23efdf0da9 59 }
bogdanm 1:4a23efdf0da9 60
bogdanm 1:4a23efdf0da9 61 void debug_set_newline(const char* newline)
bogdanm 1:4a23efdf0da9 62 {
bogdanm 1:4a23efdf0da9 63 debug_lock(true);
bogdanm 1:4a23efdf0da9 64 strncpy( debug_newline, newline, 2 );
bogdanm 1:4a23efdf0da9 65 debug_newline[2] = '\0';
bogdanm 1:4a23efdf0da9 66 debug_lock(false);
bogdanm 1:4a23efdf0da9 67 }
bogdanm 1:4a23efdf0da9 68
bogdanm 1:4a23efdf0da9 69 void debug_set_speed(int speed)
bogdanm 1:4a23efdf0da9 70 {
bogdanm 1:4a23efdf0da9 71 debug_pc.baud(speed);
bogdanm 1:4a23efdf0da9 72 }
bogdanm 1:4a23efdf0da9 73
bogdanm 1:4a23efdf0da9 74 void debug(int level, const char* module, int line, const char* fmt, ...)
bogdanm 1:4a23efdf0da9 75 {
bogdanm 1:4a23efdf0da9 76 debug_lock(true);
bogdanm 1:4a23efdf0da9 77 switch(level)
bogdanm 1:4a23efdf0da9 78 {
bogdanm 1:4a23efdf0da9 79 default:
bogdanm 1:4a23efdf0da9 80 case 1:
bogdanm 1:4a23efdf0da9 81 printf("[ERROR]");
bogdanm 1:4a23efdf0da9 82 break;
bogdanm 1:4a23efdf0da9 83 case 2:
bogdanm 1:4a23efdf0da9 84 printf("[WARN]");
bogdanm 1:4a23efdf0da9 85 break;
bogdanm 1:4a23efdf0da9 86 case 3:
bogdanm 1:4a23efdf0da9 87 printf("[INFO]");
bogdanm 1:4a23efdf0da9 88 break;
bogdanm 1:4a23efdf0da9 89 case 4:
bogdanm 1:4a23efdf0da9 90 printf("[DBG]");
bogdanm 1:4a23efdf0da9 91 break;
bogdanm 1:4a23efdf0da9 92 }
bogdanm 1:4a23efdf0da9 93
bogdanm 1:4a23efdf0da9 94 printf(" Module %s - Line %d: ", module, line);
bogdanm 1:4a23efdf0da9 95
bogdanm 1:4a23efdf0da9 96 va_list argp;
bogdanm 1:4a23efdf0da9 97
bogdanm 1:4a23efdf0da9 98 va_start(argp, fmt);
bogdanm 1:4a23efdf0da9 99 vprintf(fmt, argp);
bogdanm 1:4a23efdf0da9 100 va_end(argp);
bogdanm 1:4a23efdf0da9 101
bogdanm 1:4a23efdf0da9 102 printf(debug_newline);
bogdanm 1:4a23efdf0da9 103
bogdanm 1:4a23efdf0da9 104 fflush(stdout);
bogdanm 1:4a23efdf0da9 105
bogdanm 1:4a23efdf0da9 106 debug_lock(false);
bogdanm 1:4a23efdf0da9 107
bogdanm 1:4a23efdf0da9 108 }
bogdanm 1:4a23efdf0da9 109
bogdanm 1:4a23efdf0da9 110 void debug_error(const char* module, int line, int ret)
bogdanm 1:4a23efdf0da9 111 {
bogdanm 1:4a23efdf0da9 112 debug_lock(true);
bogdanm 1:4a23efdf0da9 113 printf("[RC] Module %s - Line %d : Error %d\n", module, line, ret);
bogdanm 1:4a23efdf0da9 114 fflush(stdout);
bogdanm 1:4a23efdf0da9 115 debug_lock(false);
bogdanm 1:4a23efdf0da9 116 }
bogdanm 1:4a23efdf0da9 117
bogdanm 1:4a23efdf0da9 118 void debug_exact(const char* fmt, ...)
bogdanm 1:4a23efdf0da9 119 {
bogdanm 1:4a23efdf0da9 120 debug_lock(true);
bogdanm 1:4a23efdf0da9 121 va_list argp;
bogdanm 1:4a23efdf0da9 122
bogdanm 1:4a23efdf0da9 123 va_start(argp, fmt);
bogdanm 1:4a23efdf0da9 124 vprintf(fmt, argp);
bogdanm 1:4a23efdf0da9 125 va_end(argp);
bogdanm 1:4a23efdf0da9 126 debug_lock(false);
bogdanm 1:4a23efdf0da9 127 }