Libraries and Example of mbed parallel bus using I2C port expanders
Dependencies: HDSP253X mbed PCF8574_Bus
Diff: STANAG_Codes.cpp
- Revision:
- 6:aaefa04f06be
- Parent:
- 5:38b853bb1afa
- Child:
- 7:8680b8b718c8
--- a/STANAG_Codes.cpp Fri Aug 26 20:35:11 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,249 +0,0 @@ -/* STANAG Codes - LTD STANAG Codes - * Copyright (c) 2011 Wim Huiskamp - * - * Released under the MIT License: http://mbed.org/license/mit - * - * version 0.2 Initial Release -*/ -#include "mbed.h" -#include "STANAG_Codes.h" - - -/** Create a STANAG Codes object - * - * @param none - * @brief -*/ -STANAG_Codes::STANAG_Codes() { - - _init(); -} - -/** Init STANAG_Codes() - * @param - * @returns - */ -void STANAG_Codes::_init(void) { - - for (_codeIdx=0; _codeIdx < D_STANAG_CODES; _codeIdx++) { - - for (_digitIdx=0; _digitIdx < D_STANAG_DIGITS; _digitIdx++) { - _codes[_codeIdx][_digitIdx] = STANAG_DEFAULTS[_codeIdx][_digitIdx]; - } - } - -#if(0) - for (_codeIdx=0; _codeIdx < D_STANAG_CODES; _codeIdx++) { - _codes[_codeIdx] = STANAG_DEFAULTS[_codeIdx]; - } -#endif - - _codeIdx = 0; - _digitIdx = 0; -} - - -/** Set the code Index of the selected STANAG Code - * @param uint8_t codeIdx - * @returns value of STANAG code Index - */ -uint8_t STANAG_Codes::setCodeIdx(uint8_t codeIdx) { - - //Check upper boundary - if (codeIdx > D_STANAG_CODES-1) { - _codeIdx = D_STANAG_CODES-1; - } - else { - _codeIdx = codeIdx; - }; - - return _codeIdx; -} - - -/** Get code Index of the selected STANAG Code - * @param - * @returns value of STANAG code Index - */ -uint8_t STANAG_Codes::getCodeIdx() { - - return _codeIdx; -} - - -/** Increment code Index of the selected STANAG Code - * @param - * @returns value of STANAG code Index - */ -uint8_t STANAG_Codes::incCodeIdx() { - - _codeIdx++; - - //Check upper boundary and wrap around - if (_codeIdx > D_STANAG_CODES-1) { - _codeIdx = 0; - }; - - return _codeIdx; -} - - -/** Set the digit index of the selected STANAG Code - * @param uint8_t digitIdx - * @returns value of the digit index - */ -uint8_t STANAG_Codes::setDigitIdx(uint8_t digitIdx) { - - //Check upper boundary - if (digitIdx > D_STANAG_DIGITS-1) { - _digitIdx = D_STANAG_DIGITS-1; - } - else { - _digitIdx = digitIdx; - }; - - return _digitIdx; -} - - -/** Get digit Index of the selected STANAG Code - * @param - * @returns value of digit Index - */ -uint8_t STANAG_Codes::getDigitIdx() { - - return _digitIdx; -} - - -/** Increment digit Index of the selected STANAG Code - * @param - * @returns value of digit Index - */ -uint8_t STANAG_Codes::incDigitIdx() { - - _digitIdx++; - - //Check upper boundary and wrap around - if (_digitIdx > D_STANAG_DIGITS-1) { - _digitIdx = 0; - }; - - return _digitIdx; -} - - -/** Increment Digit of the selected STANAG Code - * @param - * @returns value of Digit - */ -uint8_t STANAG_Codes::incDigit() { - uint8_t digit; - - //Get digit value and increment - digit = _codes[_codeIdx][_digitIdx]; - digit++; - -//NOTE: maybe additional checks required. Valid codes seem to start with a "1" ??? - - //Check upper boundary and wrap around - if (digit > 9) { - digit=0; - }; - - // Save updated digit - _codes[_codeIdx][_digitIdx]=digit; - - return digit; -} - - - -/** Compute the integer value of the selected STANAG Code - * @param uint8_t codeIdx - * @returns integer value of STANAG code - */ -int STANAG_Codes::getCode(uint8_t codeIdx) { - uint8_t digitIdx; - int code; - - code=0; - for (digitIdx=0; digitIdx < D_STANAG_DIGITS; digitIdx++) { - - // ..., thousands, hundreds, tens, units - code = code + _codes[codeIdx][digitIdx] * DECIMALS[D_STANAG_DIGITS - 1 - digitIdx]; - }; - - return code; -} - - -/** Compute the integer value of the currently selected STANAG Code - * @param - * @returns integer value of STANAG code - */ -int STANAG_Codes::getCode() { - - return getCode(_codeIdx); -} - - -/** Compute and Set the digits of the selected STANAG Code - * @param uint8_t codeIdx - * @param int code - * @returns valid integer value of STANAG code - */ -int STANAG_Codes::setCode(uint8_t codeIdx, int code) { - uint8_t digitIdx; - int temp; - - //Check lower boundary - if (code<0) { - code=0; - } - else { - //Check upper boundary - if (code > DECIMALS[D_STANAG_DIGITS]) { - code = DECIMALS[D_STANAG_DIGITS] - 1; - } - }; - - // Extract decimal digits - temp=code; - for (digitIdx=0; digitIdx < D_STANAG_DIGITS; digitIdx++) { - - // ..., thousands, hundreds, tens, units - _codes[codeIdx][digitIdx] = temp / DECIMALS[D_STANAG_DIGITS - 1 - digitIdx]; // Extract most significant decimal digit - temp = temp % DECIMALS[D_STANAG_DIGITS - 1 - digitIdx]; // Remainder for next digit - }; - - return code; -} - - -/** Compute and Set the digits of the currently selected STANAG Code - * @param int code - * @returns valid integer value of STANAG code - */ -int STANAG_Codes::setCode(int code) { - - return setCode(_codeIdx, code); -} - - - -#if(0) -int STANAG_Codes::setCodeDigits(uint8_t codeIdx, STANAG_Code_t STANAG_code) { -} - -STANAG_Code_t STANAG_Codes::getCodeDigits(uint8_t codeIdx) { -} -#endif - - - -/*****************************************************************************/ -/****************************** END OF FILE ********************************/ -/*****************************************************************************/ - -