LMiC adapted to work with SX1272MB2xAS LoRa shield.

Fork of LMiC by Timothy Mulrooney

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?

UserRevisionLine numberNew 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_