QP/C
qs_byte.c
Go to the documentation of this file.
00001 /*****************************************************************************
00002 * Product:  QS/C
00003 * Last Updated for Version: 4.4.00
00004 * Date of the Last Update:  Jan 14, 2012
00005 *
00006 *                    Q u a n t u m     L e a P s
00007 *                    ---------------------------
00008 *                    innovating embedded systems
00009 *
00010 * Copyright (C) 2002-2012 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 
00036 /*..........................................................................*/
00037 uint16_t QS_getByte(void) {
00038     uint16_t ret;
00039     if (QS_used_ == (QSCtr)0) {
00040         ret = QS_EOD;                                    /* set End-Of-Data */
00041     }
00042     else {
00043         ret = (uint16_t)QS_PTR_AT_(QS_tail_);     /* set the byte to return */
00044         ++QS_tail_;                                     /* advance the tail */
00045         if (QS_tail_ == QS_end_) {                     /* tail wrap around? */
00046             QS_tail_ = (QSCtr)0;
00047         }
00048         --QS_used_;                                   /* one less byte used */
00049     }
00050     return ret;                                   /* return the byte or EOD */
00051 }