driver for the WNC M14A2A Cellular Data Module

Committer:
JMF
Date:
Tue Feb 06 16:10:48 2018 +0000
Revision:
0:6a2d96c2a520
Incorporating changes suggested by ARM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JMF 0:6a2d96c2a520 1 /**
JMF 0:6a2d96c2a520 2 * copyright (c) 2017-2018, James Flynn
JMF 0:6a2d96c2a520 3 * SPDX-License-Identifier: Apache-2.0
JMF 0:6a2d96c2a520 4 */
JMF 0:6a2d96c2a520 5
JMF 0:6a2d96c2a520 6 /*
JMF 0:6a2d96c2a520 7 * Licensed under the Apache License, Version 2.0 (the "License");
JMF 0:6a2d96c2a520 8 * you may not use this file except in compliance with the License.
JMF 0:6a2d96c2a520 9 * You may obtain a copy of the License at
JMF 0:6a2d96c2a520 10 *
JMF 0:6a2d96c2a520 11 * http://www.apache.org/licenses/LICENSE-2.0
JMF 0:6a2d96c2a520 12 *
JMF 0:6a2d96c2a520 13 * Unless required by applicable law or agreed to in writing, software
JMF 0:6a2d96c2a520 14 * distributed under the License is distributed on an "AS IS" BASIS,
JMF 0:6a2d96c2a520 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
JMF 0:6a2d96c2a520 16 *
JMF 0:6a2d96c2a520 17 * See the License for the specific language governing permissions and
JMF 0:6a2d96c2a520 18 * limitations under the License.
JMF 0:6a2d96c2a520 19 */
JMF 0:6a2d96c2a520 20
JMF 0:6a2d96c2a520 21 /**
JMF 0:6a2d96c2a520 22 * @file WNCDebug.h
JMF 0:6a2d96c2a520 23 * @brief A debug class that coordinates the output of debug messages to
JMF 0:6a2d96c2a520 24 * either stdio or a serial port based on instantiation.
JMF 0:6a2d96c2a520 25 *
JMF 0:6a2d96c2a520 26 * @author James Flynn
JMF 0:6a2d96c2a520 27 *
JMF 0:6a2d96c2a520 28 * @date 1-Feb-2018
JMF 0:6a2d96c2a520 29 *
JMF 0:6a2d96c2a520 30 */
JMF 0:6a2d96c2a520 31
JMF 0:6a2d96c2a520 32 #ifndef __WNCDEBUG__
JMF 0:6a2d96c2a520 33 #define __WNCDEBUG__
JMF 0:6a2d96c2a520 34 #include <stdio.h>
JMF 0:6a2d96c2a520 35 #include "BufferedSerial.h"
JMF 0:6a2d96c2a520 36
JMF 0:6a2d96c2a520 37 /** WNCDebug class
JMF 0:6a2d96c2a520 38 * Used to write debug data to the user designated IO. Currently
JMF 0:6a2d96c2a520 39 * The class expects either a stdio element (defaults to stderr) or
JMF 0:6a2d96c2a520 40 * a pointer to a BufferedSerial object.
JMF 0:6a2d96c2a520 41 */
JMF 0:6a2d96c2a520 42
JMF 0:6a2d96c2a520 43 class WNCDebug
JMF 0:6a2d96c2a520 44 {
JMF 0:6a2d96c2a520 45 public:
JMF 0:6a2d96c2a520 46 //! Create class with either stdio or a pointer to a uart
JMF 0:6a2d96c2a520 47 WNCDebug( FILE * fd = stderr ): m_puart(NULL) {m_stdiofp=fd;};
JMF 0:6a2d96c2a520 48 WNCDebug( BufferedSerial * uart): m_stdiofp(NULL) {m_puart=uart;};
JMF 0:6a2d96c2a520 49 ~WNCDebug() {};
JMF 0:6a2d96c2a520 50
JMF 0:6a2d96c2a520 51 //! standard printf() functionallity
JMF 0:6a2d96c2a520 52 int printf( char * fmt, ...) {
JMF 0:6a2d96c2a520 53 char buffer[256];
JMF 0:6a2d96c2a520 54 int ret=0;
JMF 0:6a2d96c2a520 55 va_list args;
JMF 0:6a2d96c2a520 56 va_start (args, fmt);
JMF 0:6a2d96c2a520 57 vsnprintf(buffer, sizeof(buffer), fmt, args);
JMF 0:6a2d96c2a520 58 prt.lock();
JMF 0:6a2d96c2a520 59 if( m_stdiofp )
JMF 0:6a2d96c2a520 60 ret=fputs(buffer,m_stdiofp);
JMF 0:6a2d96c2a520 61 else
JMF 0:6a2d96c2a520 62 ret=m_puart->puts(buffer);
JMF 0:6a2d96c2a520 63 prt.unlock();
JMF 0:6a2d96c2a520 64 va_end (args);
JMF 0:6a2d96c2a520 65 return ret;
JMF 0:6a2d96c2a520 66 }
JMF 0:6a2d96c2a520 67
JMF 0:6a2d96c2a520 68 //! standard putc() functionallity
JMF 0:6a2d96c2a520 69 int putc( int c ) {
JMF 0:6a2d96c2a520 70 int ret=0;
JMF 0:6a2d96c2a520 71 prt.lock();
JMF 0:6a2d96c2a520 72 if( m_stdiofp )
JMF 0:6a2d96c2a520 73 ret=fputc(c, m_stdiofp);
JMF 0:6a2d96c2a520 74 else
JMF 0:6a2d96c2a520 75 ret=m_puart->putc(c);
JMF 0:6a2d96c2a520 76 prt.unlock();
JMF 0:6a2d96c2a520 77 return ret;
JMF 0:6a2d96c2a520 78 }
JMF 0:6a2d96c2a520 79
JMF 0:6a2d96c2a520 80 //! standard puts() functionallity
JMF 0:6a2d96c2a520 81 int puts( const char * str ) {
JMF 0:6a2d96c2a520 82 int ret=0;
JMF 0:6a2d96c2a520 83 prt.lock();
JMF 0:6a2d96c2a520 84 if( m_stdiofp )
JMF 0:6a2d96c2a520 85 ret=fputs(str,m_stdiofp);
JMF 0:6a2d96c2a520 86 else
JMF 0:6a2d96c2a520 87 ret=m_puart->puts(str);
JMF 0:6a2d96c2a520 88 prt.unlock();
JMF 0:6a2d96c2a520 89 return ret;
JMF 0:6a2d96c2a520 90 }
JMF 0:6a2d96c2a520 91
JMF 0:6a2d96c2a520 92 private:
JMF 0:6a2d96c2a520 93 std::FILE *m_stdiofp;
JMF 0:6a2d96c2a520 94 BufferedSerial *m_puart;
JMF 0:6a2d96c2a520 95 Mutex prt;
JMF 0:6a2d96c2a520 96 };
JMF 0:6a2d96c2a520 97
JMF 0:6a2d96c2a520 98 #endif
JMF 0:6a2d96c2a520 99