Avnet / WncControllerLibrary

Fork of WncControllerLibrary by Fred Kellerman

Committer:
fkellermavnet
Date:
Thu Sep 01 22:28:10 2016 +0000
Revision:
2:30d78cda6779
Parent:
1:ac2de545b981
Added a new method to K64F library to allow one to type in the debug serial port and send and receive commands to the WNC.

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 2:30d78cda6779 74 /**
fkellermavnet 2:30d78cda6779 75 * \brief Activates a mode where the user can send text to and from the K64F
fkellermavnet 2:30d78cda6779 76 * debug Serial port directly to the WNC.
fkellermavnet 2:30d78cda6779 77 *
fkellermavnet 2:30d78cda6779 78 * \param [in] echoOn - set to true to enable terminal echo
fkellermavnet 2:30d78cda6779 79 *
fkellermavnet 2:30d78cda6779 80 * \return true - if terminal mode was successfully entered and exited.
fkellermavnet 2:30d78cda6779 81 *
fkellermavnet 2:30d78cda6779 82 * \details Activates a mode where the user can send text to and from the K64F
fkellermavnet 2:30d78cda6779 83 * debug Serial port directly to the WNC. The mode is entered via this
fkellermavnet 2:30d78cda6779 84 * call. The mode is exited when the user types CTRL-Q. While in this
fkellermavnet 2:30d78cda6779 85 * mode all text to and from the WNC is consumed by the debug Serial port.
fkellermavnet 2:30d78cda6779 86 * No other methods in the class will receive any of the WNC output.
fkellermavnet 2:30d78cda6779 87 */
fkellermavnet 2:30d78cda6779 88 bool enterWncTerminalMode(bool echoOn);
fkellermavnet 2:30d78cda6779 89
fkellermavnet 0:affdbb35faa4 90 private:
fkellermavnet 0:affdbb35faa4 91
fkellermavnet 0:affdbb35faa4 92 // Disallow copy
fkellermavnet 0:affdbb35faa4 93 // WncControllerK64F operator=(WncControllerK64F lhs);
fkellermavnet 0:affdbb35faa4 94
fkellermavnet 0:affdbb35faa4 95 // Users must define these functionalities:
fkellermavnet 0:affdbb35faa4 96 virtual int putc(char c);
fkellermavnet 0:affdbb35faa4 97 virtual int puts(const char * s);
fkellermavnet 0:affdbb35faa4 98 virtual char getc(void);
fkellermavnet 1:ac2de545b981 99 virtual int charReady(void);
fkellermavnet 1:ac2de545b981 100 virtual int dbgWriteChar(char b);
fkellermavnet 1:ac2de545b981 101 virtual int dbgWriteChars(const char *b);
fkellermavnet 0:affdbb35faa4 102 virtual bool initWncModem(uint8_t powerUpTimeoutSecs);
fkellermavnet 0:affdbb35faa4 103 virtual void waitMs(int t);
fkellermavnet 0:affdbb35faa4 104 virtual void waitUs(int t);
fkellermavnet 0:affdbb35faa4 105
fkellermavnet 0:affdbb35faa4 106 virtual int getLogTimerTicks(void);
fkellermavnet 0:affdbb35faa4 107 virtual void startTimerA(void);
fkellermavnet 0:affdbb35faa4 108 virtual void stopTimerA(void);
fkellermavnet 1:ac2de545b981 109 virtual int getTimerTicksA_mS(void);
fkellermavnet 0:affdbb35faa4 110 virtual void startTimerB(void);
fkellermavnet 0:affdbb35faa4 111 virtual void stopTimerB(void);
fkellermavnet 1:ac2de545b981 112 virtual int getTimerTicksB_mS(void);
fkellermavnet 0:affdbb35faa4 113
fkellermavnet 1:ac2de545b981 114 MODSERIAL * m_pDbgUart;
fkellermavnet 1:ac2de545b981 115 MODSERIAL * m_pWncUart;
fkellermavnet 0:affdbb35faa4 116 WncGpioPinListK64F m_gpioPinList;
fkellermavnet 0:affdbb35faa4 117 Timer m_logTimer;
fkellermavnet 0:affdbb35faa4 118 Timer m_timerA;
fkellermavnet 0:affdbb35faa4 119 Timer m_timerB;
fkellermavnet 0:affdbb35faa4 120 };
fkellermavnet 0:affdbb35faa4 121
fkellermavnet 0:affdbb35faa4 122 }; // End namespace WncController_fk
fkellermavnet 0:affdbb35faa4 123
fkellermavnet 0:affdbb35faa4 124 #endif