example project to explain how to write a class library

Committer:
okano
Date:
Mon Nov 03 00:30:02 2014 +0000
Revision:
6:ab79d1157026
Parent:
5:863659ef0231
Child:
7:9a7235e5fe27
comment added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okano 6:ab79d1157026 1 /** A sample code for class library development
okano 6:ab79d1157026 2 *
okano 6:ab79d1157026 3 * @author Tedd OKANO
okano 6:ab79d1157026 4 * @version 1.0
okano 6:ab79d1157026 5 * @date 22-Oct-2014
okano 6:ab79d1157026 6 *
okano 6:ab79d1157026 7 * This code explains steps of the class code development.
okano 6:ab79d1157026 8 * The each steps are saved in code repository.
okano 6:ab79d1157026 9 * A I2C temperature sensor LM75B is used as a target device.
okano 6:ab79d1157026 10 *
okano 6:ab79d1157026 11 * About LM75B:
okano 6:ab79d1157026 12 * http://www.nxp.com/documents/data_sheet/LM75B.pdf
okano 6:ab79d1157026 13 */
okano 6:ab79d1157026 14
okano 0:6ecb302da815 15 #include "mbed.h"
okano 0:6ecb302da815 16
okano 6:ab79d1157026 17 /** Default slave address */
okano 0:6ecb302da815 18 #define ADDRESS_LM75B 0x90
okano 0:6ecb302da815 19
okano 6:ab79d1157026 20 /** LM75B register name ans addresses */
okano 0:6ecb302da815 21 #define LM75B_Conf 0x01
okano 0:6ecb302da815 22 #define LM75B_Temp 0x00
okano 0:6ecb302da815 23 #define LM75B_Tos 0x03
okano 0:6ecb302da815 24 #define LM75B_Thyst 0x02
okano 0:6ecb302da815 25
okano 6:ab79d1157026 26 /** test_LM75B class library
okano 6:ab79d1157026 27 *
okano 6:ab79d1157026 28 * Class library to provide very simple interface for mbed
okano 6:ab79d1157026 29 *
okano 6:ab79d1157026 30 * Example:
okano 6:ab79d1157026 31 * @code
okano 6:ab79d1157026 32 * #include "mbed.h"
okano 6:ab79d1157026 33 * #include "test_LM75B.h"
okano 6:ab79d1157026 34 *
okano 6:ab79d1157026 35 * test_LM75B temp0( p28, p27 );
okano 6:ab79d1157026 36 *
okano 6:ab79d1157026 37 * I2C i2c( p28, p27 );
okano 6:ab79d1157026 38 * test_LM75B temp1( i2c );
okano 6:ab79d1157026 39 *
okano 6:ab79d1157026 40 *
okano 6:ab79d1157026 41 * int main()
okano 6:ab79d1157026 42 * {
okano 6:ab79d1157026 43 * float t0;
okano 6:ab79d1157026 44 * float t1;
okano 6:ab79d1157026 45 *
okano 6:ab79d1157026 46 * i2c.frequency( 400 * 1000 );
okano 6:ab79d1157026 47 *
okano 6:ab79d1157026 48 * while(1) {
okano 6:ab79d1157026 49 * t0 = temp0;
okano 6:ab79d1157026 50 * t1 = temp1;
okano 6:ab79d1157026 51 * printf( "temp = %7.3f, %7.3f\r\n", t0, t1 );
okano 6:ab79d1157026 52 * wait( 1 );
okano 6:ab79d1157026 53 * }
okano 6:ab79d1157026 54 * }
okano 6:ab79d1157026 55 * @endcode
okano 6:ab79d1157026 56 */
okano 0:6ecb302da815 57 class test_LM75B
okano 0:6ecb302da815 58 {
okano 0:6ecb302da815 59 public:
okano 6:ab79d1157026 60
okano 6:ab79d1157026 61 /** Create a test_LM75B instance connected to specified I2C pins with specified address
okano 6:ab79d1157026 62 *
okano 6:ab79d1157026 63 * @param sda I2C-bus SDA pin
okano 6:ab79d1157026 64 * @param scl I2C-bus SCL pin
okano 6:ab79d1157026 65 * @param address (option) I2C-bus slave address (default: 0x90)
okano 6:ab79d1157026 66 */
okano 1:239684cd8ae9 67 test_LM75B( PinName sda, PinName scl, char address = ADDRESS_LM75B );
okano 6:ab79d1157026 68
okano 6:ab79d1157026 69 /** Create a test_LM75B instance connected to specified I2C pins with specified address
okano 6:ab79d1157026 70 *
okano 6:ab79d1157026 71 * @param i2c_obj I2C object (instance)
okano 6:ab79d1157026 72 * @param address (option) I2C-bus slave address (default: 0x90)
okano 6:ab79d1157026 73 */
okano 5:863659ef0231 74 test_LM75B( I2C &i2c_obj, char address = ADDRESS_LM75B );
okano 6:ab79d1157026 75
okano 6:ab79d1157026 76 /** Destractor
okano 6:ab79d1157026 77 */
okano 0:6ecb302da815 78 ~test_LM75B();
okano 6:ab79d1157026 79
okano 6:ab79d1157026 80 /** Initialization
okano 6:ab79d1157026 81 */
okano 1:239684cd8ae9 82 void init( void );
okano 6:ab79d1157026 83
okano 6:ab79d1157026 84 /** Read temperature
okano 6:ab79d1157026 85 *
okano 6:ab79d1157026 86 * @return value of degree Celsius (in float)
okano 6:ab79d1157026 87 */
okano 1:239684cd8ae9 88 float read( void );
okano 6:ab79d1157026 89
okano 6:ab79d1157026 90 /** Read temperature
okano 6:ab79d1157026 91 *
okano 6:ab79d1157026 92 * @return the object returns the read value
okano 6:ab79d1157026 93 */
okano 1:239684cd8ae9 94 operator float( void );
okano 6:ab79d1157026 95
okano 0:6ecb302da815 96 private:
okano 5:863659ef0231 97 I2C *i2c_p;
okano 5:863659ef0231 98 I2C &i2c;
okano 1:239684cd8ae9 99 char adr;
okano 0:6ecb302da815 100 };