Avnet / WncControllerLibrary

Fork of WncControllerLibrary by Fred Kellerman

Committer:
fkellermavnet
Date:
Thu Sep 01 02:28:10 2016 +0000
Revision:
1:ac2de545b981
Parent:
0:affdbb35faa4
Child:
2:30d78cda6779
Had to revert back to MODSERIAL and cleaned up a bunch of minor things.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fkellermavnet 0:affdbb35faa4 1 /*
fkellermavnet 0:affdbb35faa4 2 Copyright (c) 2016 Fred Kellerman
fkellermavnet 0:affdbb35faa4 3
fkellermavnet 0:affdbb35faa4 4 Permission is hereby granted, free of charge, to any person obtaining a copy
fkellermavnet 0:affdbb35faa4 5 of this software and associated documentation files (the "Software"), to deal
fkellermavnet 0:affdbb35faa4 6 in the Software without restriction, including without limitation the rights
fkellermavnet 0:affdbb35faa4 7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
fkellermavnet 0:affdbb35faa4 8 copies of the Software, and to permit persons to whom the Software is
fkellermavnet 0:affdbb35faa4 9 furnished to do so, subject to the following conditions:
fkellermavnet 0:affdbb35faa4 10
fkellermavnet 0:affdbb35faa4 11 The above copyright notice and this permission notice shall be included in
fkellermavnet 0:affdbb35faa4 12 all copies or substantial portions of the Software.
fkellermavnet 0:affdbb35faa4 13
fkellermavnet 0:affdbb35faa4 14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
fkellermavnet 0:affdbb35faa4 15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
fkellermavnet 0:affdbb35faa4 16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
fkellermavnet 0:affdbb35faa4 17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
fkellermavnet 0:affdbb35faa4 18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
fkellermavnet 0:affdbb35faa4 19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
fkellermavnet 0:affdbb35faa4 20 THE SOFTWARE.
fkellermavnet 0:affdbb35faa4 21
fkellermavnet 0:affdbb35faa4 22 @file WncController.h
fkellermavnet 0:affdbb35faa4 23 @purpose Controls WNC Cellular Modem
fkellermavnet 0:affdbb35faa4 24 @version 1.0
fkellermavnet 0:affdbb35faa4 25 @date July 2016
fkellermavnet 0:affdbb35faa4 26 @author Fred Kellerman
fkellermavnet 0:affdbb35faa4 27 */
fkellermavnet 0:affdbb35faa4 28
fkellermavnet 0:affdbb35faa4 29 #ifndef __WNCCONTROLLERK64F_H_
fkellermavnet 0:affdbb35faa4 30 #define __WNCCONTROLLERK64F_H_
fkellermavnet 0:affdbb35faa4 31
fkellermavnet 0:affdbb35faa4 32 #include <string>
fkellermavnet 0:affdbb35faa4 33 #include <stdint.h>
fkellermavnet 0:affdbb35faa4 34 #include "mbed.h"
fkellermavnet 0:affdbb35faa4 35 #include "MODSERIAL.h"
fkellermavnet 0:affdbb35faa4 36 #include "WncController.h"
fkellermavnet 0:affdbb35faa4 37
fkellermavnet 0:affdbb35faa4 38 namespace WncControllerK64F_fk {
fkellermavnet 0:affdbb35faa4 39
fkellermavnet 0:affdbb35faa4 40 using namespace WncController_fk;
fkellermavnet 0:affdbb35faa4 41 using namespace std;
fkellermavnet 0:affdbb35faa4 42
fkellermavnet 0:affdbb35faa4 43 struct WncGpioPinListK64F {
fkellermavnet 0:affdbb35faa4 44 /////////////////////////////////////////////////////
fkellermavnet 0:affdbb35faa4 45 // NXP GPIO Pins that are used to initialize the WNC Shield
fkellermavnet 0:affdbb35faa4 46 /////////////////////////////////////////////////////
fkellermavnet 0:affdbb35faa4 47 DigitalOut * mdm_uart2_rx_boot_mode_sel; // on powerup, 0 = boot mode, 1 = normal boot
fkellermavnet 0:affdbb35faa4 48 DigitalOut * mdm_power_on; // 0 = turn modem on, 1 = turn modem off (should be held high for >5 seconds to cycle modem)
fkellermavnet 0:affdbb35faa4 49 DigitalOut * mdm_wakeup_in; // 0 = let modem sleep, 1 = keep modem awake -- Note: pulled high on shield
fkellermavnet 0:affdbb35faa4 50 DigitalOut * mdm_reset; // active high
fkellermavnet 0:affdbb35faa4 51 DigitalOut * shield_3v3_1v8_sig_trans_ena; // 0 = disabled (all signals high impedence, 1 = translation active
fkellermavnet 0:affdbb35faa4 52 DigitalOut * mdm_uart1_cts;
fkellermavnet 0:affdbb35faa4 53 };
fkellermavnet 0:affdbb35faa4 54
fkellermavnet 0:affdbb35faa4 55 class WncControllerK64F : public WncController
fkellermavnet 0:affdbb35faa4 56 {
fkellermavnet 0:affdbb35faa4 57 public:
fkellermavnet 0:affdbb35faa4 58 /**
fkellermavnet 0:affdbb35faa4 59 * \brief Constructor for UART controlled WNC
fkellermavnet 0:affdbb35faa4 60 *
fkellermavnet 0:affdbb35faa4 61 * \param [in] wnc_uart - Reference to a SerialBuffered object which will
fkellermavnet 0:affdbb35faa4 62 * be used as the bus to control the WNC. apnStr = a text string for
fkellermavnet 0:affdbb35faa4 63 * the cellular APN name.
fkellermavnet 0:affdbb35faa4 64 *
fkellermavnet 0:affdbb35faa4 65 * \return None.
fkellermavnet 0:affdbb35faa4 66 *
fkellermavnet 0:affdbb35faa4 67 * \details Adding another way to talk to the WNC, like I2C or USB,
fkellermavnet 0:affdbb35faa4 68 * a constructor should be added for each type just like the SerialBuffered
fkellermavnet 0:affdbb35faa4 69 * constructor below. Assumes UART is enabled, setup and ready to go. This
fkellermavnet 0:affdbb35faa4 70 * class will read and write to this UART.
fkellermavnet 0:affdbb35faa4 71 */
fkellermavnet 1:ac2de545b981 72 WncControllerK64F(struct WncGpioPinListK64F * pPins, MODSERIAL * wnc_uart, MODSERIAL * debug_uart = NULL);
fkellermavnet 0:affdbb35faa4 73
fkellermavnet 0:affdbb35faa4 74 private:
fkellermavnet 0:affdbb35faa4 75
fkellermavnet 0:affdbb35faa4 76 // Disallow copy
fkellermavnet 0:affdbb35faa4 77 // WncControllerK64F operator=(WncControllerK64F lhs);
fkellermavnet 0:affdbb35faa4 78
fkellermavnet 0:affdbb35faa4 79 // Users must define these functionalities:
fkellermavnet 0:affdbb35faa4 80 virtual int putc(char c);
fkellermavnet 0:affdbb35faa4 81 virtual int puts(const char * s);
fkellermavnet 0:affdbb35faa4 82 virtual char getc(void);
fkellermavnet 1:ac2de545b981 83 virtual int charReady(void);
fkellermavnet 1:ac2de545b981 84 virtual int dbgWriteChar(char b);
fkellermavnet 1:ac2de545b981 85 virtual int dbgWriteChars(const char *b);
fkellermavnet 0:affdbb35faa4 86 virtual bool initWncModem(uint8_t powerUpTimeoutSecs);
fkellermavnet 0:affdbb35faa4 87 virtual void waitMs(int t);
fkellermavnet 0:affdbb35faa4 88 virtual void waitUs(int t);
fkellermavnet 0:affdbb35faa4 89
fkellermavnet 0:affdbb35faa4 90 virtual int getLogTimerTicks(void);
fkellermavnet 0:affdbb35faa4 91 virtual void startTimerA(void);
fkellermavnet 0:affdbb35faa4 92 virtual void stopTimerA(void);
fkellermavnet 1:ac2de545b981 93 virtual int getTimerTicksA_mS(void);
fkellermavnet 0:affdbb35faa4 94 virtual void startTimerB(void);
fkellermavnet 0:affdbb35faa4 95 virtual void stopTimerB(void);
fkellermavnet 1:ac2de545b981 96 virtual int getTimerTicksB_mS(void);
fkellermavnet 0:affdbb35faa4 97
fkellermavnet 1:ac2de545b981 98 MODSERIAL * m_pDbgUart;
fkellermavnet 1:ac2de545b981 99 MODSERIAL * m_pWncUart;
fkellermavnet 0:affdbb35faa4 100 WncGpioPinListK64F m_gpioPinList;
fkellermavnet 0:affdbb35faa4 101 Timer m_logTimer;
fkellermavnet 0:affdbb35faa4 102 Timer m_timerA;
fkellermavnet 0:affdbb35faa4 103 Timer m_timerB;
fkellermavnet 0:affdbb35faa4 104 };
fkellermavnet 0:affdbb35faa4 105
fkellermavnet 0:affdbb35faa4 106 }; // End namespace WncController_fk
fkellermavnet 0:affdbb35faa4 107
fkellermavnet 0:affdbb35faa4 108 #endif