QP/C++
qs_.cpp
Go to the documentation of this file.
00001 
00002 // Product: QS/C++
00003 // Last Updated for Version: 4.2.00
00004 // Date of the Last Update:  Jul 05, 2011
00005 //
00006 //                    Q u a n t u m     L e a P s
00007 //                    ---------------------------
00008 //                    innovating embedded systems
00009 //
00010 // Copyright (C) 2002-2011 Quantum Leaps, LLC. All rights reserved.
00011 //
00012 // This software may be distributed and modified under the terms of the GNU
00013 // General Public License version 2 (GPL) as published by the Free Software
00014 // Foundation and appearing in the file GPL.TXT included in the packaging of
00015 // this file. Please note that GPL Section 2[b] requires that all works based
00016 // on this software must also be made publicly available under the terms of
00017 // the GPL ("Copyleft").
00018 //
00019 // Alternatively, this software may be distributed and modified under the
00020 // terms of Quantum Leaps commercial licenses, which expressly supersede
00021 // the GPL and are specifically designed for licensees interested in
00022 // retaining the proprietary status of their code.
00023 //
00024 // Contact information:
00025 // Quantum Leaps Web site:  http://www.quantum-leaps.com
00026 // e-mail:                  info@quantum-leaps.com
00028 #include "qs_pkg.h"
00029 
00033 
00034 #ifdef Q_USE_NAMESPACE
00035 namespace QP {
00036 #endif
00037 
00038 //............................................................................
00039 void const *QS::smObj_;                  // local state machine for QEP filter
00040 void const *QS::aoObj_;                   // local active object for QF filter
00041 void const *QS::mpObj_;                     //  local event pool for QF filter
00042 void const *QS::eqObj_;                      //  local raw queue for QF filter
00043 void const *QS::teObj_;                     //  local time event for QF filter
00044 void const *QS::apObj_;                    //  local object Application filter
00045 
00046 QSTimeCtr volatile QS::tickCtr_;     // tick counter for the QS_QF_TICK record
00047 
00048 //............................................................................
00049 void QS::u8_(uint8_t d) {
00050     QS_INSERT_ESC_BYTE(d)
00051 }
00052 //............................................................................
00053 void QS::u16_(uint16_t d) {
00054     QS_INSERT_ESC_BYTE((uint8_t)d)
00055     d >>= 8;
00056     QS_INSERT_ESC_BYTE((uint8_t)d)
00057 }
00058 //............................................................................
00059 void QS::u32_(uint32_t d) {
00060     QS_INSERT_ESC_BYTE((uint8_t)d)
00061     d >>= 8;
00062     QS_INSERT_ESC_BYTE((uint8_t)d)
00063     d >>= 8;
00064     QS_INSERT_ESC_BYTE((uint8_t)d)
00065     d >>= 8;
00066     QS_INSERT_ESC_BYTE((uint8_t)d)
00067 }
00068 //............................................................................
00069 //lint -e970 -e971               ignore MISRA rules 13 and 14 in this function
00070 void QS::str_(char const *s) {
00071     while (*s != '\0') {
00072                                        // ASCII characters don't need escaping
00073         QS_chksum_ = (uint8_t)(QS_chksum_ + (uint8_t)(*s));
00074         QS_INSERT_BYTE((uint8_t)(*s))
00075         ++s;
00076     }
00077     QS_INSERT_BYTE((uint8_t)0)
00078 }
00079 //............................................................................
00080 //lint -e970 -e971               ignore MISRA rules 13 and 14 in this function
00081 void QS::str_ROM_(char const Q_ROM * Q_ROM_VAR s) {
00082     uint8_t b;
00083     while ((b = (uint8_t)Q_ROM_BYTE(*s)) != (uint8_t)0) {
00084                                        // ASCII characters don't need escaping
00085         QS_chksum_ = (uint8_t)(QS_chksum_ + b);
00086         QS_INSERT_BYTE(b)
00087         ++s;
00088     }
00089     QS_INSERT_BYTE((uint8_t)0)
00090 }
00091 
00092 #ifdef Q_USE_NAMESPACE
00093 }                                                              // namespace QP
00094 #endif