Linux Face / QPFramework
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers qs_.cpp Source File

qs_.cpp

Go to the documentation of this file.
00001 //////////////////////////////////////////////////////////////////////////////
00002 // Product: QS/C++
00003 // Last Updated for Version: 4.0.01
00004 // Date of the Last Update:  Jun 09, 2008
00005 //
00006 //                    Q u a n t u m     L e a P s
00007 //                    ---------------------------
00008 //                    innovating embedded systems
00009 //
00010 // Copyright (C) 2002-2008 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
00027 //////////////////////////////////////////////////////////////////////////////
00028 #include "qs_pkg.h"
00029 
00030 /// \file
00031 /// \ingroup qs
00032 /// \brief QS functions for internal use inside QP components
00033 
00034 //............................................................................
00035 void const *QS::smObj_;                  // local state machine for QEP filter
00036 void const *QS::aoObj_;                   // local active object for QF filter
00037 void const *QS::mpObj_;                     //  local event pool for QF filter
00038 void const *QS::eqObj_;                      //  local raw queue for QF filter
00039 void const *QS::teObj_;                     //  local time event for QF filter
00040 void const *QS::apObj_;                    //  local object Application filter
00041 
00042 QSTimeCtr volatile QS::tickCtr_;     // tick counter for the QS_QF_TICK record
00043 
00044 //............................................................................
00045 void QS::u8_(uint8_t d) {
00046     QS_INSERT_ESC_BYTE(d)
00047 }
00048 //............................................................................
00049 void QS::u16_(uint16_t d) {
00050     QS_INSERT_ESC_BYTE((uint8_t)d)
00051     d >>= 8;
00052     QS_INSERT_ESC_BYTE((uint8_t)d)
00053 }
00054 //............................................................................
00055 void QS::u32_(uint32_t d) {
00056     QS_INSERT_ESC_BYTE((uint8_t)d)
00057     d >>= 8;
00058     QS_INSERT_ESC_BYTE((uint8_t)d)
00059     d >>= 8;
00060     QS_INSERT_ESC_BYTE((uint8_t)d)
00061     d >>= 8;
00062     QS_INSERT_ESC_BYTE((uint8_t)d)
00063 }
00064 //............................................................................
00065 //lint -e970 -e971               ignore MISRA rules 13 and 14 in this function
00066 void QS::str_(char const *s) {
00067     while (*s != '\0') {
00068                                        // ASCII characters don't need escaping
00069         QS_chksum_ = (uint8_t)(QS_chksum_ + (uint8_t)(*s));
00070         QS_INSERT_BYTE((uint8_t)(*s))
00071         ++s;
00072     }
00073     QS_INSERT_BYTE((uint8_t)0)
00074 }
00075 //............................................................................
00076 //lint -e970 -e971               ignore MISRA rules 13 and 14 in this function
00077 void QS::str_ROM_(char const Q_ROM * Q_ROM_VAR s) {
00078     uint8_t b;
00079     while ((b = (uint8_t)Q_ROM_BYTE(*s)) != (uint8_t)0) {
00080                                        // ASCII characters don't need escaping
00081         QS_chksum_ = (uint8_t)(QS_chksum_ + b);
00082         QS_INSERT_BYTE(b)
00083         ++s;
00084     }
00085     QS_INSERT_BYTE((uint8_t)0)
00086 }