• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2010, Atmel Corporation.
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 //     * Redistributions of source code must retain the above copyright
7 //       notice, this list of conditions and the following disclaimer.
8 //     * Redistributions in binary form must reproduce the above copyright
9 //       notice, this list of conditions and the following disclaimer in the
10 //       documentation and/or other materials provided with the distribution.
11 //     * Neither the name of Atmel nor the
12 //       names of its contributors may be used to endorse or promote products
13 //       derived from this software without specific prior written permission.
14 //
15 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
19 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 
26 #ifndef SHA_COMM_H
27 #define SHA_COMM_H
28 
29 #include <stdint.h>
30 
31 #define SHA_WATCHDOG_TIMEOUT    (21)    //!< maximum watchdog timeout of device in s
32 
33 #define SHA_COMMAND_SIZE_MIN    (6)        //!< minimum number of bytes in command (from count byte to second CRC byte)
34 #define SHA_RESPONSE_SIZE_MIN   (4)        //!< minimum number of bytes in response
35 
36 #define SHA_BUFFER_POS_COUNT    (0)        //!< buffer index of count byte in command or response
37 #define SHA_BUFFER_POS_STATUS   (1)        //!< buffer index of status byte in response
38 
39 #define SHA_STATUS_BYTE_WAKEUP  (0x11)    //!< status byte after wakeup
40 #define SHA_STATUS_BYTE_PARSE   (0x03)    //!< command parse error
41 #define SHA_STATUS_BYTE_EXEC    (0x0F)    //!< command execution error
42 #define SHA_STATUS_BYTE_COMM    (0xFF)    //!< communication error
43 
44 #define SHA_RETRY_COUNT         (3)        //!< number of rx retries
45 
46 #define WATCHDOG_TIMEOUT        (21)    //!< maximum watchdog timeout of device in s
47 
48 /** \brief used as parameter group for communication functions */
49 typedef struct {
50     uint8_t *txBuffer;
51     uint8_t *rxBuffer;
52     uint8_t rxSize;
53     uint32_t executionDelay;
54 } SHA_CommParameters;
55 
56 
57 uint8_t SHAC_Wakeup();
58 int8_t SHAC_SendAndReceive(SHA_CommParameters *params);
59 #endif
60