La Suno / Mbed 2 deprecated afero_poc15_180403R

Dependencies:   UniGraphic mbed vt100

Committer:
Rhyme
Date:
Tue Apr 24 08:58:33 2018 +0000
Revision:
0:0b6732b53bf4
Temporary Connector Reversed Version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 0:0b6732b53bf4 1 /**
Rhyme 0:0b6732b53bf4 2 * Copyright 2015 Afero, Inc.
Rhyme 0:0b6732b53bf4 3 *
Rhyme 0:0b6732b53bf4 4 * Licensed under the Apache License, Version 2.0 (the "License");
Rhyme 0:0b6732b53bf4 5 * you may not use this file except in compliance with the License.
Rhyme 0:0b6732b53bf4 6 * You may obtain a copy of the License at
Rhyme 0:0b6732b53bf4 7 *
Rhyme 0:0b6732b53bf4 8 * http://www.apache.org/licenses/LICENSE-2.0
Rhyme 0:0b6732b53bf4 9 *
Rhyme 0:0b6732b53bf4 10 * Unless required by applicable law or agreed to in writing, software
Rhyme 0:0b6732b53bf4 11 * distributed under the License is distributed on an "AS IS" BASIS,
Rhyme 0:0b6732b53bf4 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Rhyme 0:0b6732b53bf4 13 * See the License for the specific language governing permissions and
Rhyme 0:0b6732b53bf4 14 * limitations under the License.
Rhyme 0:0b6732b53bf4 15 */
Rhyme 0:0b6732b53bf4 16
Rhyme 0:0b6732b53bf4 17 #include "StatusCommand.h"
Rhyme 0:0b6732b53bf4 18
Rhyme 0:0b6732b53bf4 19 #define SERIAL_PRINT_DBG_ASR_ON 0
Rhyme 0:0b6732b53bf4 20
Rhyme 0:0b6732b53bf4 21 StatusCommand::StatusCommand(uint16_t bytesToSend) {
Rhyme 0:0b6732b53bf4 22 _cmd = 0x30;
Rhyme 0:0b6732b53bf4 23 _bytesToSend = bytesToSend;
Rhyme 0:0b6732b53bf4 24 _bytesToRecv = 0;
Rhyme 0:0b6732b53bf4 25 }
Rhyme 0:0b6732b53bf4 26
Rhyme 0:0b6732b53bf4 27 StatusCommand::StatusCommand() {
Rhyme 0:0b6732b53bf4 28 _cmd = 0x30;
Rhyme 0:0b6732b53bf4 29 _bytesToSend = 0;
Rhyme 0:0b6732b53bf4 30 _bytesToRecv = 0;
Rhyme 0:0b6732b53bf4 31 }
Rhyme 0:0b6732b53bf4 32
Rhyme 0:0b6732b53bf4 33 StatusCommand::~StatusCommand() {
Rhyme 0:0b6732b53bf4 34 }
Rhyme 0:0b6732b53bf4 35
Rhyme 0:0b6732b53bf4 36 uint16_t StatusCommand::getSize() {
Rhyme 0:0b6732b53bf4 37 return sizeof(_cmd) + sizeof(_bytesToSend) + sizeof(_bytesToRecv);
Rhyme 0:0b6732b53bf4 38 }
Rhyme 0:0b6732b53bf4 39
Rhyme 0:0b6732b53bf4 40 uint16_t StatusCommand::getBytes(int *bytes) {
Rhyme 0:0b6732b53bf4 41 int index = 0;
Rhyme 0:0b6732b53bf4 42
Rhyme 0:0b6732b53bf4 43 bytes[index++] = (_cmd);
Rhyme 0:0b6732b53bf4 44 bytes[index++] = (_bytesToSend & 0xff);
Rhyme 0:0b6732b53bf4 45 bytes[index++] = ((_bytesToSend >> 8) & 0xff);
Rhyme 0:0b6732b53bf4 46 bytes[index++] = (_bytesToRecv & 0xff);
Rhyme 0:0b6732b53bf4 47 bytes[index++] = ((_bytesToRecv >> 8) & 0xff);
Rhyme 0:0b6732b53bf4 48
Rhyme 0:0b6732b53bf4 49 return index;
Rhyme 0:0b6732b53bf4 50 }
Rhyme 0:0b6732b53bf4 51
Rhyme 0:0b6732b53bf4 52 uint8_t StatusCommand::calcChecksum() {
Rhyme 0:0b6732b53bf4 53 uint8_t result = 0;
Rhyme 0:0b6732b53bf4 54
Rhyme 0:0b6732b53bf4 55 result += (_cmd);
Rhyme 0:0b6732b53bf4 56 result += (_bytesToSend & 0xff);
Rhyme 0:0b6732b53bf4 57 result += ((_bytesToSend >> 8) & 0xff);
Rhyme 0:0b6732b53bf4 58 result += (_bytesToRecv & 0xff);
Rhyme 0:0b6732b53bf4 59 result += ((_bytesToRecv >> 8) & 0xff);
Rhyme 0:0b6732b53bf4 60
Rhyme 0:0b6732b53bf4 61 return result;
Rhyme 0:0b6732b53bf4 62 }
Rhyme 0:0b6732b53bf4 63
Rhyme 0:0b6732b53bf4 64 void StatusCommand::setChecksum(uint8_t checksum) {
Rhyme 0:0b6732b53bf4 65 _checksum = checksum;
Rhyme 0:0b6732b53bf4 66 }
Rhyme 0:0b6732b53bf4 67
Rhyme 0:0b6732b53bf4 68 uint8_t StatusCommand::getChecksum() {
Rhyme 0:0b6732b53bf4 69 uint8_t result = 0;
Rhyme 0:0b6732b53bf4 70
Rhyme 0:0b6732b53bf4 71 result += (_cmd);
Rhyme 0:0b6732b53bf4 72 result += (_bytesToSend & 0xff);
Rhyme 0:0b6732b53bf4 73 result += ((_bytesToSend >> 8) & 0xff);
Rhyme 0:0b6732b53bf4 74 result += (_bytesToRecv & 0xff);
Rhyme 0:0b6732b53bf4 75 result += ((_bytesToRecv >> 8) & 0xff);
Rhyme 0:0b6732b53bf4 76
Rhyme 0:0b6732b53bf4 77 return result;
Rhyme 0:0b6732b53bf4 78 }
Rhyme 0:0b6732b53bf4 79
Rhyme 0:0b6732b53bf4 80 void StatusCommand::setAck(bool ack) {
Rhyme 0:0b6732b53bf4 81 _cmd = ack ? 0x31 : 0x30;
Rhyme 0:0b6732b53bf4 82 }
Rhyme 0:0b6732b53bf4 83
Rhyme 0:0b6732b53bf4 84 void StatusCommand::setBytesToSend(uint16_t bytesToSend) {
Rhyme 0:0b6732b53bf4 85 _bytesToSend = bytesToSend;
Rhyme 0:0b6732b53bf4 86 }
Rhyme 0:0b6732b53bf4 87
Rhyme 0:0b6732b53bf4 88 uint16_t StatusCommand::getBytesToSend() {
Rhyme 0:0b6732b53bf4 89 return _bytesToSend;
Rhyme 0:0b6732b53bf4 90 }
Rhyme 0:0b6732b53bf4 91
Rhyme 0:0b6732b53bf4 92 void StatusCommand::setBytesToRecv(uint16_t bytesToRecv) {
Rhyme 0:0b6732b53bf4 93 _bytesToRecv = bytesToRecv;
Rhyme 0:0b6732b53bf4 94 }
Rhyme 0:0b6732b53bf4 95
Rhyme 0:0b6732b53bf4 96 uint16_t StatusCommand::getBytesToRecv() {
Rhyme 0:0b6732b53bf4 97 return _bytesToRecv;
Rhyme 0:0b6732b53bf4 98 }
Rhyme 0:0b6732b53bf4 99
Rhyme 0:0b6732b53bf4 100 bool StatusCommand::equals(StatusCommand *statusCommand) {
Rhyme 0:0b6732b53bf4 101 return (_cmd == statusCommand->_cmd && _bytesToSend == statusCommand->_bytesToSend &&
Rhyme 0:0b6732b53bf4 102 _bytesToRecv == statusCommand->_bytesToRecv);
Rhyme 0:0b6732b53bf4 103 }
Rhyme 0:0b6732b53bf4 104
Rhyme 0:0b6732b53bf4 105 bool StatusCommand::isValid() {
Rhyme 0:0b6732b53bf4 106 return (_checksum == calcChecksum()) && (_cmd == 0x30 || _cmd == 0x31);
Rhyme 0:0b6732b53bf4 107 }
Rhyme 0:0b6732b53bf4 108
Rhyme 0:0b6732b53bf4 109 void StatusCommand::dumpBytes() {
Rhyme 0:0b6732b53bf4 110 #if SERIAL_PRINT_DBG_ASR_ON
Rhyme 0:0b6732b53bf4 111 int len = getSize();
Rhyme 0:0b6732b53bf4 112 int bytes[len];
Rhyme 0:0b6732b53bf4 113 getBytes(bytes);
Rhyme 0:0b6732b53bf4 114
Rhyme 0:0b6732b53bf4 115 printf("len : %d\n",len);
Rhyme 0:0b6732b53bf4 116 printf("data : ");
Rhyme 0:0b6732b53bf4 117 for (int i = 0; i < len; i++) {
Rhyme 0:0b6732b53bf4 118 if (i > 0) {
Rhyme 0:0b6732b53bf4 119 printf(", ");
Rhyme 0:0b6732b53bf4 120 }
Rhyme 0:0b6732b53bf4 121 int b = bytes[i] & 0xff;
Rhyme 0:0b6732b53bf4 122 printf("0x%02x", b) ;
Rhyme 0:0b6732b53bf4 123 }
Rhyme 0:0b6732b53bf4 124 printf("\n") ;
Rhyme 0:0b6732b53bf4 125 #endif
Rhyme 0:0b6732b53bf4 126 }
Rhyme 0:0b6732b53bf4 127
Rhyme 0:0b6732b53bf4 128 void StatusCommand::dump() {
Rhyme 0:0b6732b53bf4 129 #if SERIAL_PRINT_DBG_ASR_ON
Rhyme 0:0b6732b53bf4 130 printf("cmd : %s\n",_cmd == 0x30 ? "STATUS" : "STATUS_ACK");
Rhyme 0:0b6732b53bf4 131 printf("bytes to send : %d\n",_bytesToSend);
Rhyme 0:0b6732b53bf4 132 printf("bytes to receive : %d\n",_bytesToRecv);
Rhyme 0:0b6732b53bf4 133 #endif
Rhyme 0:0b6732b53bf4 134 }
Rhyme 0:0b6732b53bf4 135