Branch data Line data Source code
1 : : /* 2 : : * Copyright Tim (xtimor@gmail.com) 3 : : * 4 : : * NMEA library is free software; you can redistribute it and/or modify 5 : : * it under the terms of the GNU Lesser General Public License as published by 6 : : * the Free Software Foundation; either version 2 of the License, or 7 : : * (at your option) any later version. 8 : : * 9 : : * This program is distributed in the hope that it will be useful, 10 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 : : * GNU Lesser General Public License for more details. 13 : : * 14 : : * You should have received a copy of the GNU Lesser General Public License 15 : : * along with this program. If not, see <http://www.gnu.org/licenses/> 16 : : */ 17 : : /* 18 : : * 19 : : * NMEA library 20 : : * URL: http://nmea.sourceforge.net 21 : : * Author: Tim (xtimor@gmail.com) 22 : : * Licence: http://www.gnu.org/licenses/lgpl.html 23 : : * $Id: context.c 17 2008-03-11 11:56:11Z xtimor $ 24 : : * 25 : : */ 26 : : 27 : : #include "context.h" 28 : : 29 : : #include <string.h> 30 : : #include <stdarg.h> 31 : : #include <stdio.h> 32 : : 33 : 0 : nmeaPROPERTY *nmea_property() 34 : : { 35 : : static nmeaPROPERTY prop = 36 : : { 37 : : 0, 0, NMEA_DEF_PARSEBUFF 38 : : }; 39 : : 40 : 0 : return ∝ 41 : : } 42 : : 43 : 0 : void nmea_trace( const char *str, ... ) 44 : : { 45 : : int size; 46 : : va_list arg_list; 47 : : char buff[NMEA_DEF_PARSEBUFF]; 48 : 0 : nmeaTraceFunc func = nmea_property()->trace_func; 49 : : 50 : 0 : if ( func ) 51 : : { 52 : 0 : va_start( arg_list, str ); 53 : 0 : size = NMEA_POSIX( vsnprintf )( &buff[0], NMEA_DEF_PARSEBUFF - 1, str, arg_list ); 54 : 0 : va_end( arg_list ); 55 : : 56 : 0 : if ( size > 0 ) 57 : 0 : ( *func )( &buff[0], size ); 58 : 0 : } 59 : 0 : } 60 : : 61 : 0 : void nmea_trace_buff( const char *buff, int buff_size ) 62 : : { 63 : 0 : nmeaTraceFunc func = nmea_property()->trace_func; 64 : 0 : if ( func && buff_size ) 65 : 0 : ( *func )( buff, buff_size ); 66 : 0 : } 67 : : 68 : 0 : void nmea_error( const char *str, ... ) 69 : : { 70 : : int size; 71 : : va_list arg_list; 72 : : char buff[NMEA_DEF_PARSEBUFF]; 73 : 0 : nmeaErrorFunc func = nmea_property()->error_func; 74 : : 75 : 0 : if ( func ) 76 : : { 77 : 0 : va_start( arg_list, str ); 78 : 0 : size = NMEA_POSIX( vsnprintf )( &buff[0], NMEA_DEF_PARSEBUFF - 1, str, arg_list ); 79 : 0 : va_end( arg_list ); 80 : : 81 : 0 : if ( size > 0 ) 82 : 0 : ( *func )( &buff[0], size ); 83 : 0 : } 84 : 0 : }