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 #ifndef MBED_I2C_SLAVE_H
sam_grove 5:3f93dd1d4cb3 17 #define MBED_I2C_SLAVE_H
sam_grove 5:3f93dd1d4cb3 18
sam_grove 5:3f93dd1d4cb3 19 #include "platform.h"
sam_grove 5:3f93dd1d4cb3 20
sam_grove 5:3f93dd1d4cb3 21 #if DEVICE_I2CSLAVE
sam_grove 5:3f93dd1d4cb3 22
sam_grove 5:3f93dd1d4cb3 23 #include "i2c_api.h"
sam_grove 5:3f93dd1d4cb3 24
sam_grove 5:3f93dd1d4cb3 25 namespace mbed {
sam_grove 5:3f93dd1d4cb3 26
sam_grove 5:3f93dd1d4cb3 27 /** An I2C Slave, used for communicating with an I2C Master device
sam_grove 5:3f93dd1d4cb3 28 *
sam_grove 5:3f93dd1d4cb3 29 * Example:
sam_grove 5:3f93dd1d4cb3 30 * @code
sam_grove 5:3f93dd1d4cb3 31 * // Simple I2C responder
sam_grove 5:3f93dd1d4cb3 32 * #include <mbed.h>
sam_grove 5:3f93dd1d4cb3 33 *
sam_grove 5:3f93dd1d4cb3 34 * I2CSlave slave(p9, p10);
sam_grove 5:3f93dd1d4cb3 35 *
sam_grove 5:3f93dd1d4cb3 36 * int main() {
sam_grove 5:3f93dd1d4cb3 37 * char buf[10];
sam_grove 5:3f93dd1d4cb3 38 * char msg[] = "Slave!";
sam_grove 5:3f93dd1d4cb3 39 *
sam_grove 5:3f93dd1d4cb3 40 * slave.address(0xA0);
sam_grove 5:3f93dd1d4cb3 41 * while (1) {
sam_grove 5:3f93dd1d4cb3 42 * int i = slave.receive();
sam_grove 5:3f93dd1d4cb3 43 * switch (i) {
sam_grove 5:3f93dd1d4cb3 44 * case I2CSlave::ReadAddressed:
sam_grove 5:3f93dd1d4cb3 45 * slave.write(msg, strlen(msg) + 1); // Includes null char
sam_grove 5:3f93dd1d4cb3 46 * break;
sam_grove 5:3f93dd1d4cb3 47 * case I2CSlave::WriteGeneral:
sam_grove 5:3f93dd1d4cb3 48 * slave.read(buf, 10);
sam_grove 5:3f93dd1d4cb3 49 * printf("Read G: %s\n", buf);
sam_grove 5:3f93dd1d4cb3 50 * break;
sam_grove 5:3f93dd1d4cb3 51 * case I2CSlave::WriteAddressed:
sam_grove 5:3f93dd1d4cb3 52 * slave.read(buf, 10);
sam_grove 5:3f93dd1d4cb3 53 * printf("Read A: %s\n", buf);
sam_grove 5:3f93dd1d4cb3 54 * break;
sam_grove 5:3f93dd1d4cb3 55 * }
sam_grove 5:3f93dd1d4cb3 56 * for(int i = 0; i < 10; i++) buf[i] = 0; // Clear buffer
sam_grove 5:3f93dd1d4cb3 57 * }
sam_grove 5:3f93dd1d4cb3 58 * }
sam_grove 5:3f93dd1d4cb3 59 * @endcode
sam_grove 5:3f93dd1d4cb3 60 */
sam_grove 5:3f93dd1d4cb3 61 class I2CSlave {
sam_grove 5:3f93dd1d4cb3 62
sam_grove 5:3f93dd1d4cb3 63 public:
sam_grove 5:3f93dd1d4cb3 64 enum RxStatus {
sam_grove 5:3f93dd1d4cb3 65 NoData = 0,
sam_grove 5:3f93dd1d4cb3 66 ReadAddressed = 1,
sam_grove 5:3f93dd1d4cb3 67 WriteGeneral = 2,
sam_grove 5:3f93dd1d4cb3 68 WriteAddressed = 3
sam_grove 5:3f93dd1d4cb3 69 };
sam_grove 5:3f93dd1d4cb3 70
sam_grove 5:3f93dd1d4cb3 71 /** Create an I2C Slave interface, connected to the specified pins.
sam_grove 5:3f93dd1d4cb3 72 *
sam_grove 5:3f93dd1d4cb3 73 * @param sda I2C data line pin
sam_grove 5:3f93dd1d4cb3 74 * @param scl I2C clock line pin
sam_grove 5:3f93dd1d4cb3 75 */
sam_grove 5:3f93dd1d4cb3 76 I2CSlave(PinName sda, PinName scl);
sam_grove 5:3f93dd1d4cb3 77
sam_grove 5:3f93dd1d4cb3 78 /** Set the frequency of the I2C interface
sam_grove 5:3f93dd1d4cb3 79 *
sam_grove 5:3f93dd1d4cb3 80 * @param hz The bus frequency in hertz
sam_grove 5:3f93dd1d4cb3 81 */
sam_grove 5:3f93dd1d4cb3 82 void frequency(int hz);
sam_grove 5:3f93dd1d4cb3 83
sam_grove 5:3f93dd1d4cb3 84 /** Checks to see if this I2C Slave has been addressed.
sam_grove 5:3f93dd1d4cb3 85 *
sam_grove 5:3f93dd1d4cb3 86 * @returns
sam_grove 5:3f93dd1d4cb3 87 * A status indicating if the device has been addressed, and how
sam_grove 5:3f93dd1d4cb3 88 * - NoData - the slave has not been addressed
sam_grove 5:3f93dd1d4cb3 89 * - ReadAddressed - the master has requested a read from this slave
sam_grove 5:3f93dd1d4cb3 90 * - WriteAddressed - the master is writing to this slave
sam_grove 5:3f93dd1d4cb3 91 * - WriteGeneral - the master is writing to all slave
sam_grove 5:3f93dd1d4cb3 92 */
sam_grove 5:3f93dd1d4cb3 93 int receive(void);
sam_grove 5:3f93dd1d4cb3 94
sam_grove 5:3f93dd1d4cb3 95 /** Read from an I2C master.
sam_grove 5:3f93dd1d4cb3 96 *
sam_grove 5:3f93dd1d4cb3 97 * @param data pointer to the byte array to read data in to
sam_grove 5:3f93dd1d4cb3 98 * @param length maximum number of bytes to read
sam_grove 5:3f93dd1d4cb3 99 *
sam_grove 5:3f93dd1d4cb3 100 * @returns
sam_grove 5:3f93dd1d4cb3 101 * 0 on success,
sam_grove 5:3f93dd1d4cb3 102 * non-0 otherwise
sam_grove 5:3f93dd1d4cb3 103 */
sam_grove 5:3f93dd1d4cb3 104 int read(char *data, int length);
sam_grove 5:3f93dd1d4cb3 105
sam_grove 5:3f93dd1d4cb3 106 /** Read a single byte from an I2C master.
sam_grove 5:3f93dd1d4cb3 107 *
sam_grove 5:3f93dd1d4cb3 108 * @returns
sam_grove 5:3f93dd1d4cb3 109 * the byte read
sam_grove 5:3f93dd1d4cb3 110 */
sam_grove 5:3f93dd1d4cb3 111 int read(void);
sam_grove 5:3f93dd1d4cb3 112
sam_grove 5:3f93dd1d4cb3 113 /** Write to an I2C master.
sam_grove 5:3f93dd1d4cb3 114 *
sam_grove 5:3f93dd1d4cb3 115 * @param data pointer to the byte array to be transmitted
sam_grove 5:3f93dd1d4cb3 116 * @param length the number of bytes to transmite
sam_grove 5:3f93dd1d4cb3 117 *
sam_grove 5:3f93dd1d4cb3 118 * @returns
sam_grove 5:3f93dd1d4cb3 119 * 0 on success,
sam_grove 5:3f93dd1d4cb3 120 * non-0 otherwise
sam_grove 5:3f93dd1d4cb3 121 */
sam_grove 5:3f93dd1d4cb3 122 int write(const char *data, int length);
sam_grove 5:3f93dd1d4cb3 123
sam_grove 5:3f93dd1d4cb3 124 /** Write a single byte to an I2C master.
sam_grove 5:3f93dd1d4cb3 125 *
sam_grove 5:3f93dd1d4cb3 126 * @data the byte to write
sam_grove 5:3f93dd1d4cb3 127 *
sam_grove 5:3f93dd1d4cb3 128 * @returns
sam_grove 5:3f93dd1d4cb3 129 * '1' if an ACK was received,
sam_grove 5:3f93dd1d4cb3 130 * '0' otherwise
sam_grove 5:3f93dd1d4cb3 131 */
sam_grove 5:3f93dd1d4cb3 132 int write(int data);
sam_grove 5:3f93dd1d4cb3 133
sam_grove 5:3f93dd1d4cb3 134 /** Sets the I2C slave address.
sam_grove 5:3f93dd1d4cb3 135 *
sam_grove 5:3f93dd1d4cb3 136 * @param address The address to set for the slave (ignoring the least
sam_grove 5:3f93dd1d4cb3 137 * signifcant bit). If set to 0, the slave will only respond to the
sam_grove 5:3f93dd1d4cb3 138 * general call address.
sam_grove 5:3f93dd1d4cb3 139 */
sam_grove 5:3f93dd1d4cb3 140 void address(int address);
sam_grove 5:3f93dd1d4cb3 141
sam_grove 5:3f93dd1d4cb3 142 /** Reset the I2C slave back into the known ready receiving state.
sam_grove 5:3f93dd1d4cb3 143 */
sam_grove 5:3f93dd1d4cb3 144 void stop(void);
sam_grove 5:3f93dd1d4cb3 145
sam_grove 5:3f93dd1d4cb3 146 protected:
sam_grove 5:3f93dd1d4cb3 147 i2c_t _i2c;
sam_grove 5:3f93dd1d4cb3 148 };
sam_grove 5:3f93dd1d4cb3 149
sam_grove 5:3f93dd1d4cb3 150 } // namespace mbed
sam_grove 5:3f93dd1d4cb3 151
sam_grove 5:3f93dd1d4cb3 152 #endif
sam_grove 5:3f93dd1d4cb3 153
sam_grove 5:3f93dd1d4cb3 154 #endif