LMiC adapted to work with SX1272MB2xAS LoRa shield.
Fork of LMiC by
hal.h@8:5879e83f632a, 2018-04-02 (annotated)
- Committer:
- GTsapparellas
- Date:
- Mon Apr 02 12:04:59 2018 +0000
- Revision:
- 8:5879e83f632a
- Parent:
- 1:d3b7bde3995c
LoRa Node consisting of FRDM-K64F along with SX1272MB2xAS LoRa shield employed through IBM's LMiC library.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mluis | 0:62d1edcc13d1 | 1 | /******************************************************************************* |
mluis | 1:d3b7bde3995c | 2 | * Copyright (c) 2014-2015 IBM Corporation. |
mluis | 0:62d1edcc13d1 | 3 | * All rights reserved. This program and the accompanying materials |
mluis | 0:62d1edcc13d1 | 4 | * are made available under the terms of the Eclipse Public License v1.0 |
mluis | 0:62d1edcc13d1 | 5 | * which accompanies this distribution, and is available at |
mluis | 0:62d1edcc13d1 | 6 | * http://www.eclipse.org/legal/epl-v10.html |
mluis | 0:62d1edcc13d1 | 7 | * |
mluis | 0:62d1edcc13d1 | 8 | * Contributors: |
mluis | 0:62d1edcc13d1 | 9 | * IBM Zurich Research Lab - initial API, implementation and documentation |
GTsapparellas | 8:5879e83f632a | 10 | * ///////////////////////////////////////////////////////////////////////////// |
GTsapparellas | 8:5879e83f632a | 11 | * |
GTsapparellas | 8:5879e83f632a | 12 | * Used by Giorgos Tsapparellas for Internet of Things (IoT) smart monitoring |
GTsapparellas | 8:5879e83f632a | 13 | * device for agriculture using LoRaWAN technology. |
GTsapparellas | 8:5879e83f632a | 14 | * |
GTsapparellas | 8:5879e83f632a | 15 | * Date of issued copy: 25 January 2018 |
GTsapparellas | 8:5879e83f632a | 16 | * |
GTsapparellas | 8:5879e83f632a | 17 | * Modifications: |
GTsapparellas | 8:5879e83f632a | 18 | * - No external modifications of the existing "AS IT IS" software. |
GTsapparellas | 8:5879e83f632a | 19 | * - Added some external comments for meeting good principles of |
GTsapparellas | 8:5879e83f632a | 20 | * source code re-usability. |
GTsapparellas | 8:5879e83f632a | 21 | ******************************************************************************/ |
mluis | 0:62d1edcc13d1 | 22 | |
mluis | 0:62d1edcc13d1 | 23 | #ifndef _hal_hpp_ |
mluis | 0:62d1edcc13d1 | 24 | #define _hal_hpp_ |
mluis | 0:62d1edcc13d1 | 25 | |
GTsapparellas | 8:5879e83f632a | 26 | /* |
GTsapparellas | 8:5879e83f632a | 27 | * hal_init function of type void. |
GTsapparellas | 8:5879e83f632a | 28 | * |
GTsapparellas | 8:5879e83f632a | 29 | * Initializes hardware (IO, SPI, TIMER, IRQ). |
GTsapparellas | 8:5879e83f632a | 30 | * |
GTsapparellas | 8:5879e83f632a | 31 | * Input parameters: None |
GTsapparellas | 8:5879e83f632a | 32 | * |
GTsapparellas | 8:5879e83f632a | 33 | */ |
mluis | 0:62d1edcc13d1 | 34 | void hal_init (void); |
mluis | 0:62d1edcc13d1 | 35 | |
GTsapparellas | 8:5879e83f632a | 36 | /* |
GTsapparellas | 8:5879e83f632a | 37 | * hal_pin_nss function of type void. |
GTsapparellas | 8:5879e83f632a | 38 | * |
GTsapparellas | 8:5879e83f632a | 39 | * Drives radio NSS pin (0=low, 1=high). |
GTsapparellas | 8:5879e83f632a | 40 | * |
GTsapparellas | 8:5879e83f632a | 41 | * Input parameters: unsigned int val |
GTsapparellas | 8:5879e83f632a | 42 | * |
GTsapparellas | 8:5879e83f632a | 43 | */ |
mluis | 0:62d1edcc13d1 | 44 | void hal_pin_nss (u1_t val); |
mluis | 0:62d1edcc13d1 | 45 | |
GTsapparellas | 8:5879e83f632a | 46 | /* |
GTsapparellas | 8:5879e83f632a | 47 | * hal_pin_rxtx function of type void. |
GTsapparellas | 8:5879e83f632a | 48 | * |
GTsapparellas | 8:5879e83f632a | 49 | * Drives radio RX/TX pins (0=rx, 1=tx). |
GTsapparellas | 8:5879e83f632a | 50 | * |
GTsapparellas | 8:5879e83f632a | 51 | * Input parameters: unsigned int val |
GTsapparellas | 8:5879e83f632a | 52 | * |
GTsapparellas | 8:5879e83f632a | 53 | */ |
mluis | 0:62d1edcc13d1 | 54 | void hal_pin_rxtx (u1_t val); |
mluis | 0:62d1edcc13d1 | 55 | |
GTsapparellas | 8:5879e83f632a | 56 | /* |
GTsapparellas | 8:5879e83f632a | 57 | * hal_pin_rst function of type void. |
GTsapparellas | 8:5879e83f632a | 58 | * |
GTsapparellas | 8:5879e83f632a | 59 | * Controls radio RST pin (0=low, 1=high, 2=floating). |
GTsapparellas | 8:5879e83f632a | 60 | * |
GTsapparellas | 8:5879e83f632a | 61 | * Input parameters: unsigned int val |
GTsapparellas | 8:5879e83f632a | 62 | * |
GTsapparellas | 8:5879e83f632a | 63 | */ |
mluis | 0:62d1edcc13d1 | 64 | void hal_pin_rst (u1_t val); |
mluis | 0:62d1edcc13d1 | 65 | |
GTsapparellas | 8:5879e83f632a | 66 | /* |
GTsapparellas | 8:5879e83f632a | 67 | * hal_spi function of type unsigned integer. |
GTsapparellas | 8:5879e83f632a | 68 | * |
GTsapparellas | 8:5879e83f632a | 69 | * Performs 8-bit SPI transaction with radio. |
mluis | 0:62d1edcc13d1 | 70 | * - write given byte 'outval' |
GTsapparellas | 8:5879e83f632a | 71 | * - read byte |
GTsapparellas | 8:5879e83f632a | 72 | * |
GTsapparellas | 8:5879e83f632a | 73 | * Input parameters: unsigned int outval |
GTsapparellas | 8:5879e83f632a | 74 | * Return: value |
GTsapparellas | 8:5879e83f632a | 75 | * |
GTsapparellas | 8:5879e83f632a | 76 | */ |
mluis | 0:62d1edcc13d1 | 77 | u1_t hal_spi (u1_t outval); |
mluis | 0:62d1edcc13d1 | 78 | |
GTsapparellas | 8:5879e83f632a | 79 | /* |
GTsapparellas | 8:5879e83f632a | 80 | * hal_disableIRQs function of type void. |
GTsapparellas | 8:5879e83f632a | 81 | * |
GTsapparellas | 8:5879e83f632a | 82 | * Disables all CPU interrupts. |
mluis | 0:62d1edcc13d1 | 83 | * - might be invoked nested |
mluis | 0:62d1edcc13d1 | 84 | * - will be followed by matching call to hal_enableIRQs() |
GTsapparellas | 8:5879e83f632a | 85 | * |
GTsapparellas | 8:5879e83f632a | 86 | * Input parameters: None |
GTsapparellas | 8:5879e83f632a | 87 | * |
GTsapparellas | 8:5879e83f632a | 88 | */ |
mluis | 0:62d1edcc13d1 | 89 | void hal_disableIRQs (void); |
mluis | 0:62d1edcc13d1 | 90 | |
GTsapparellas | 8:5879e83f632a | 91 | /* |
GTsapparellas | 8:5879e83f632a | 92 | * hal_enableIRQs function of type void. |
GTsapparellas | 8:5879e83f632a | 93 | * |
GTsapparellas | 8:5879e83f632a | 94 | * Enables CPU interrupts. |
GTsapparellas | 8:5879e83f632a | 95 | * |
GTsapparellas | 8:5879e83f632a | 96 | * Input parameters: None |
GTsapparellas | 8:5879e83f632a | 97 | * |
GTsapparellas | 8:5879e83f632a | 98 | */ |
mluis | 0:62d1edcc13d1 | 99 | void hal_enableIRQs (void); |
mluis | 0:62d1edcc13d1 | 100 | |
GTsapparellas | 8:5879e83f632a | 101 | /* |
GTsapparellas | 8:5879e83f632a | 102 | * hal_sleep function of type void. |
GTsapparellas | 8:5879e83f632a | 103 | * |
GTsapparellas | 8:5879e83f632a | 104 | * Puts system and CPU in low-power mode, sleep until interrupt. |
GTsapparellas | 8:5879e83f632a | 105 | * |
GTsapparellas | 8:5879e83f632a | 106 | * Input parameters: None |
GTsapparellas | 8:5879e83f632a | 107 | * |
GTsapparellas | 8:5879e83f632a | 108 | */ |
mluis | 0:62d1edcc13d1 | 109 | void hal_sleep (void); |
mluis | 0:62d1edcc13d1 | 110 | |
GTsapparellas | 8:5879e83f632a | 111 | /* |
GTsapparellas | 8:5879e83f632a | 112 | * hal_ticks function of type unsigned interger. |
GTsapparellas | 8:5879e83f632a | 113 | * |
GTsapparellas | 8:5879e83f632a | 114 | * Input parameters: None |
GTsapparellas | 8:5879e83f632a | 115 | * Return: 32-bit system time in ticks. |
GTsapparellas | 8:5879e83f632a | 116 | */ |
mluis | 0:62d1edcc13d1 | 117 | u4_t hal_ticks (void); |
mluis | 0:62d1edcc13d1 | 118 | |
GTsapparellas | 8:5879e83f632a | 119 | /* |
GTsapparellas | 8:5879e83f632a | 120 | * hal_waitUntil function of type void. |
GTsapparellas | 8:5879e83f632a | 121 | * |
GTsapparellas | 8:5879e83f632a | 122 | * Busy-wait until specified timestamp (in ticks) is reached. |
GTsapparellas | 8:5879e83f632a | 123 | * |
GTsapparellas | 8:5879e83f632a | 124 | * Input parameters: unsigned int time |
GTsapparellas | 8:5879e83f632a | 125 | */ |
mluis | 0:62d1edcc13d1 | 126 | void hal_waitUntil (u4_t time); |
mluis | 0:62d1edcc13d1 | 127 | |
GTsapparellas | 8:5879e83f632a | 128 | /* |
GTsapparellas | 8:5879e83f632a | 129 | * hal_checkTimer function of type unsigned char. |
GTsapparellas | 8:5879e83f632a | 130 | * |
GTsapparellas | 8:5879e83f632a | 131 | * Checks and rewinds timer for target time. |
GTsapparellas | 8:5879e83f632a | 132 | * |
GTsapparellas | 8:5879e83f632a | 133 | * Input parameters: unsigned int targettime |
GTsapparellas | 8:5879e83f632a | 134 | * Return: - 1 if target time is close |
GTsapparellas | 8:5879e83f632a | 135 | * - otherwise rewind timer for target time or full period and return 0 |
GTsapparellas | 8:5879e83f632a | 136 | */ |
mluis | 0:62d1edcc13d1 | 137 | u1_t hal_checkTimer (u4_t targettime); |
mluis | 0:62d1edcc13d1 | 138 | |
GTsapparellas | 8:5879e83f632a | 139 | /* |
GTsapparellas | 8:5879e83f632a | 140 | * hal_failed function of type void. |
GTsapparellas | 8:5879e83f632a | 141 | * |
GTsapparellas | 8:5879e83f632a | 142 | * Performs fatal failure action. |
mluis | 0:62d1edcc13d1 | 143 | * - called by assertions |
mluis | 0:62d1edcc13d1 | 144 | * - action could be HALT or reboot |
GTsapparellas | 8:5879e83f632a | 145 | * |
GTsapparellas | 8:5879e83f632a | 146 | * Input parameters: None |
GTsapparellas | 8:5879e83f632a | 147 | * |
GTsapparellas | 8:5879e83f632a | 148 | */ |
mluis | 0:62d1edcc13d1 | 149 | void hal_failed (void); |
mluis | 0:62d1edcc13d1 | 150 | |
mluis | 0:62d1edcc13d1 | 151 | #endif // _hal_hpp_ |