Integrating the ublox LISA C200 modem

Fork of SprintUSBModemHTTPClientTest by Donatien Garnier

Committer:
sam_grove
Date:
Thu Sep 26 00:44:20 2013 -0500
Revision:
5:3f93dd1d4cb3
Exported program and replaced contents of the repo with the source
to build and debug using keil mdk. Libs NOT upto date are lwip, lwip-sys
and socket. these have newer versions under mbed_official but were starting
from a know working point

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sam_grove 5:3f93dd1d4cb3 1 /* mbed Microcontroller Library
sam_grove 5:3f93dd1d4cb3 2 * Copyright (c) 2006-2013 ARM Limited
sam_grove 5:3f93dd1d4cb3 3 *
sam_grove 5:3f93dd1d4cb3 4 * Licensed under the Apache License, Version 2.0 (the "License");
sam_grove 5:3f93dd1d4cb3 5 * you may not use this file except in compliance with the License.
sam_grove 5:3f93dd1d4cb3 6 * You may obtain a copy of the License at
sam_grove 5:3f93dd1d4cb3 7 *
sam_grove 5:3f93dd1d4cb3 8 * http://www.apache.org/licenses/LICENSE-2.0
sam_grove 5:3f93dd1d4cb3 9 *
sam_grove 5:3f93dd1d4cb3 10 * Unless required by applicable law or agreed to in writing, software
sam_grove 5:3f93dd1d4cb3 11 * distributed under the License is distributed on an "AS IS" BASIS,
sam_grove 5:3f93dd1d4cb3 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
sam_grove 5:3f93dd1d4cb3 13 * See the License for the specific language governing permissions and
sam_grove 5:3f93dd1d4cb3 14 * limitations under the License.
sam_grove 5:3f93dd1d4cb3 15 */
sam_grove 5:3f93dd1d4cb3 16 #include "InterruptIn.h"
sam_grove 5:3f93dd1d4cb3 17
sam_grove 5:3f93dd1d4cb3 18 #if DEVICE_INTERRUPTIN
sam_grove 5:3f93dd1d4cb3 19
sam_grove 5:3f93dd1d4cb3 20 namespace mbed {
sam_grove 5:3f93dd1d4cb3 21
sam_grove 5:3f93dd1d4cb3 22 InterruptIn::InterruptIn(PinName pin) {
sam_grove 5:3f93dd1d4cb3 23 gpio_irq_init(&gpio_irq, pin, (&InterruptIn::_irq_handler), (uint32_t)this);
sam_grove 5:3f93dd1d4cb3 24 gpio_init(&gpio, pin, PIN_INPUT);
sam_grove 5:3f93dd1d4cb3 25 }
sam_grove 5:3f93dd1d4cb3 26
sam_grove 5:3f93dd1d4cb3 27 InterruptIn::~InterruptIn() {
sam_grove 5:3f93dd1d4cb3 28 gpio_irq_free(&gpio_irq);
sam_grove 5:3f93dd1d4cb3 29 }
sam_grove 5:3f93dd1d4cb3 30
sam_grove 5:3f93dd1d4cb3 31 int InterruptIn::read() {
sam_grove 5:3f93dd1d4cb3 32 return gpio_read(&gpio);
sam_grove 5:3f93dd1d4cb3 33 }
sam_grove 5:3f93dd1d4cb3 34
sam_grove 5:3f93dd1d4cb3 35 void InterruptIn::mode(PinMode pull) {
sam_grove 5:3f93dd1d4cb3 36 gpio_mode(&gpio, pull);
sam_grove 5:3f93dd1d4cb3 37 }
sam_grove 5:3f93dd1d4cb3 38
sam_grove 5:3f93dd1d4cb3 39 pFunctionPointer_t InterruptIn::rise(void (*fptr)(void)) {
sam_grove 5:3f93dd1d4cb3 40 pFunctionPointer_t pf = NULL;
sam_grove 5:3f93dd1d4cb3 41 _rise.clear();
sam_grove 5:3f93dd1d4cb3 42 if (fptr) {
sam_grove 5:3f93dd1d4cb3 43 pf = _rise.add(fptr);
sam_grove 5:3f93dd1d4cb3 44 gpio_irq_set(&gpio_irq, IRQ_RISE, 1);
sam_grove 5:3f93dd1d4cb3 45 } else {
sam_grove 5:3f93dd1d4cb3 46 gpio_irq_set(&gpio_irq, IRQ_RISE, 0);
sam_grove 5:3f93dd1d4cb3 47 }
sam_grove 5:3f93dd1d4cb3 48 return pf;
sam_grove 5:3f93dd1d4cb3 49 }
sam_grove 5:3f93dd1d4cb3 50
sam_grove 5:3f93dd1d4cb3 51 pFunctionPointer_t InterruptIn::rise_add_common(void (*fptr)(void), bool front) {
sam_grove 5:3f93dd1d4cb3 52 if (NULL == fptr)
sam_grove 5:3f93dd1d4cb3 53 return NULL;
sam_grove 5:3f93dd1d4cb3 54 pFunctionPointer_t pf = front ? _rise.add_front(fptr) : _rise.add(fptr);
sam_grove 5:3f93dd1d4cb3 55 gpio_irq_set(&gpio_irq, IRQ_RISE, 1);
sam_grove 5:3f93dd1d4cb3 56 return pf;
sam_grove 5:3f93dd1d4cb3 57 }
sam_grove 5:3f93dd1d4cb3 58
sam_grove 5:3f93dd1d4cb3 59 bool InterruptIn::rise_remove(pFunctionPointer_t pf) {
sam_grove 5:3f93dd1d4cb3 60 bool res = _rise.remove(pf);
sam_grove 5:3f93dd1d4cb3 61 if (res && _rise.size() == 0)
sam_grove 5:3f93dd1d4cb3 62 gpio_irq_set(&gpio_irq, IRQ_RISE, 0);
sam_grove 5:3f93dd1d4cb3 63 return res;
sam_grove 5:3f93dd1d4cb3 64 }
sam_grove 5:3f93dd1d4cb3 65
sam_grove 5:3f93dd1d4cb3 66 pFunctionPointer_t InterruptIn::fall(void (*fptr)(void)) {
sam_grove 5:3f93dd1d4cb3 67 pFunctionPointer_t pf = NULL;
sam_grove 5:3f93dd1d4cb3 68 _fall.clear();
sam_grove 5:3f93dd1d4cb3 69 if (fptr) {
sam_grove 5:3f93dd1d4cb3 70 pf = _fall.add(fptr);
sam_grove 5:3f93dd1d4cb3 71 gpio_irq_set(&gpio_irq, IRQ_FALL, 1);
sam_grove 5:3f93dd1d4cb3 72 } else {
sam_grove 5:3f93dd1d4cb3 73 gpio_irq_set(&gpio_irq, IRQ_FALL, 0);
sam_grove 5:3f93dd1d4cb3 74 }
sam_grove 5:3f93dd1d4cb3 75 return pf;
sam_grove 5:3f93dd1d4cb3 76 }
sam_grove 5:3f93dd1d4cb3 77
sam_grove 5:3f93dd1d4cb3 78 pFunctionPointer_t InterruptIn::fall_add_common(void (*fptr)(void), bool front) {
sam_grove 5:3f93dd1d4cb3 79 if (NULL == fptr)
sam_grove 5:3f93dd1d4cb3 80 return NULL;
sam_grove 5:3f93dd1d4cb3 81 pFunctionPointer_t pf = front ? _fall.add_front(fptr) : _fall.add(fptr);
sam_grove 5:3f93dd1d4cb3 82 gpio_irq_set(&gpio_irq, IRQ_FALL, 1);
sam_grove 5:3f93dd1d4cb3 83 return pf;
sam_grove 5:3f93dd1d4cb3 84 }
sam_grove 5:3f93dd1d4cb3 85
sam_grove 5:3f93dd1d4cb3 86 bool InterruptIn::fall_remove(pFunctionPointer_t pf) {
sam_grove 5:3f93dd1d4cb3 87 bool res = _fall.remove(pf);
sam_grove 5:3f93dd1d4cb3 88 if (res && _fall.size() == 0)
sam_grove 5:3f93dd1d4cb3 89 gpio_irq_set(&gpio_irq, IRQ_FALL, 0);
sam_grove 5:3f93dd1d4cb3 90 return res;
sam_grove 5:3f93dd1d4cb3 91 }
sam_grove 5:3f93dd1d4cb3 92
sam_grove 5:3f93dd1d4cb3 93 void InterruptIn::_irq_handler(uint32_t id, gpio_irq_event event) {
sam_grove 5:3f93dd1d4cb3 94 InterruptIn *handler = (InterruptIn*)id;
sam_grove 5:3f93dd1d4cb3 95 switch (event) {
sam_grove 5:3f93dd1d4cb3 96 case IRQ_RISE: handler->_rise.call(); break;
sam_grove 5:3f93dd1d4cb3 97 case IRQ_FALL: handler->_fall.call(); break;
sam_grove 5:3f93dd1d4cb3 98 case IRQ_NONE: break;
sam_grove 5:3f93dd1d4cb3 99 }
sam_grove 5:3f93dd1d4cb3 100 }
sam_grove 5:3f93dd1d4cb3 101
sam_grove 5:3f93dd1d4cb3 102 #ifdef MBED_OPERATORS
sam_grove 5:3f93dd1d4cb3 103 InterruptIn::operator int() {
sam_grove 5:3f93dd1d4cb3 104 return read();
sam_grove 5:3f93dd1d4cb3 105 }
sam_grove 5:3f93dd1d4cb3 106 #endif
sam_grove 5:3f93dd1d4cb3 107
sam_grove 5:3f93dd1d4cb3 108 } // namespace mbed
sam_grove 5:3f93dd1d4cb3 109
sam_grove 5:3f93dd1d4cb3 110 #endif