This are general defs and base class interfaces. ( DACInterface, I2CInterface) to be used with I2C devices

Dependents:   MCP23009tst AT30TSE752TST MCP4728setaddrProg mbedSerialInterface_talkback2 ... more

The DevInterfaces class is used for a more general support of a number of I2C devices.

For the moment this is MCP4728 Quad DAC.

The idea is to write a libs for the I2C devices (and perhaps later SPI , ... devices) not restricted to a certain hardware platform.

So there is the I2CInterface. This is a ( not pure) virtual class. A pointer to this class is used for the I2C device lib (like the MCP4728 class https://developer.mbed.org/users/wbeaumont/code/MCP4728/ ) to communicate with the I2C interface. The I2C interface is kept simple as possible. So it has to be applied for "tested environments". I2C Bus timeouts etc. are hard to debug with such a simple interface. This kind of interface is also not suitable for optimal performance. The user has to take care of issues of blocking devices, parallel processes etc. This can be dealt with in the implementation of the I2CInterface class

The aim of this project is to generate code for these devices on different platforms without doing the painstaking work of looking up all the register details.

There is an implementation of the I2CInterface for the MBED , tested with the FRDM-KL05Z platform. https://developer.mbed.org/users/wbeaumont/code/I2Cinterfaces/

A very simple application on a MBED can be found in https://developer.mbed.org/users/wbeaumont/code/MCP4728test/

Committer:
wbeaumont
Date:
Wed Jan 13 14:14:39 2016 +0000
Revision:
2:58f1d5a3f850
Parent:
1:5672673314f9
Child:
4:8cbf46e5e3e5
for getVersion added infostr and moved constructor implementation to src file

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wbeaumont 0:da1fb7dd363f 1 #include "getVersion.h"
wbeaumont 0:da1fb7dd363f 2
wbeaumont 2:58f1d5a3f850 3 #define GETVERSION_SRC_VER "0.20"
wbeaumont 1:5672673314f9 4 #ifdef MBED
wbeaumont 0:da1fb7dd363f 5 #include "mbed.h"
wbeaumont 1:5672673314f9 6 #else
wbeaumont 1:5672673314f9 7 #include <stdlib.h>
wbeaumont 2:58f1d5a3f850 8 #include <stdio.h>
wbeaumont 1:5672673314f9 9 #endif
wbeaumont 0:da1fb7dd363f 10
wbeaumont 0:da1fb7dd363f 11 #define NULL 0
wbeaumont 0:da1fb7dd363f 12
wbeaumont 2:58f1d5a3f850 13
wbeaumont 2:58f1d5a3f850 14 getVersion::getVersion(const char* ver_h,const char* ver_s, const char* time,const char* date) {
wbeaumont 2:58f1d5a3f850 15 sver=ver_s; hver=ver_h; ctime=time;cdate=date;
wbeaumont 2:58f1d5a3f850 16 sprintf(infostr,"HDR ver: %s, SRC ver: %s",sver,hver);
wbeaumont 2:58f1d5a3f850 17
wbeaumont 2:58f1d5a3f850 18 } ;
wbeaumont 2:58f1d5a3f850 19
wbeaumont 2:58f1d5a3f850 20 getVersion::getVersion(){sver=0; hver=0; ctime=0;cdate=0;
wbeaumont 2:58f1d5a3f850 21 sprintf(infostr,"HDR ver: %s, SRC ver: %s",GETVERSION_HDR_VER,GETVERSION_SRC_VER);
wbeaumont 2:58f1d5a3f850 22 };
wbeaumont 2:58f1d5a3f850 23
wbeaumont 2:58f1d5a3f850 24
wbeaumont 0:da1fb7dd363f 25 void getVersion::get_dec_version( unsigned short hexversion , unsigned char & version, unsigned char& subversion) {
wbeaumont 0:da1fb7dd363f 26 subversion =(unsigned short)( hexversion & 0xFF);
wbeaumont 0:da1fb7dd363f 27 hexversion=hexversion >> 8;
wbeaumont 0:da1fb7dd363f 28 version =(unsigned char)( hexversion & 0xFF);
wbeaumont 0:da1fb7dd363f 29 }
wbeaumont 0:da1fb7dd363f 30
wbeaumont 0:da1fb7dd363f 31
wbeaumont 0:da1fb7dd363f 32
wbeaumont 0:da1fb7dd363f 33 unsigned short getVersion::get_hex_version_nr(const char * vers){
wbeaumont 0:da1fb7dd363f 34 float verf = strtof(vers,NULL);
wbeaumont 0:da1fb7dd363f 35 unsigned short version=(unsigned short) verf;
wbeaumont 0:da1fb7dd363f 36 verf=verf-version;
wbeaumont 0:da1fb7dd363f 37 version = version<<8;
wbeaumont 0:da1fb7dd363f 38 verf=verf*100;
wbeaumont 0:da1fb7dd363f 39 unsigned char sub=(unsigned char)verf;
wbeaumont 0:da1fb7dd363f 40 version=version| sub;
wbeaumont 0:da1fb7dd363f 41 return version;
wbeaumont 0:da1fb7dd363f 42 }
wbeaumont 0:da1fb7dd363f 43
wbeaumont 0:da1fb7dd363f 44
wbeaumont 0:da1fb7dd363f 45
wbeaumont 0:da1fb7dd363f 46
wbeaumont 0:da1fb7dd363f 47
wbeaumont 0:da1fb7dd363f 48
wbeaumont 0:da1fb7dd363f 49 unsigned short getVersion::getHdrVersion(){
wbeaumont 0:da1fb7dd363f 50 if( hver == NULL) return get_hex_version_nr(GETVERSION_HDR_VER);
wbeaumont 0:da1fb7dd363f 51 else return get_hex_version_nr(hver);
wbeaumont 0:da1fb7dd363f 52 }
wbeaumont 0:da1fb7dd363f 53
wbeaumont 0:da1fb7dd363f 54 unsigned short getVersion::getSrcVersion(){
wbeaumont 0:da1fb7dd363f 55 if( sver == NULL) return get_hex_version_nr(GETVERSION_SRC_VER);
wbeaumont 0:da1fb7dd363f 56 else return get_hex_version_nr(sver);
wbeaumont 0:da1fb7dd363f 57 }
wbeaumont 0:da1fb7dd363f 58
wbeaumont 0:da1fb7dd363f 59
wbeaumont 0:da1fb7dd363f 60 unsigned short getVersion::getCompileTime(){
wbeaumont 0:da1fb7dd363f 61 if ( ctime == NULL ) return 0;
wbeaumont 0:da1fb7dd363f 62 else return 0;
wbeaumont 0:da1fb7dd363f 63 }
wbeaumont 0:da1fb7dd363f 64
wbeaumont 0:da1fb7dd363f 65
wbeaumont 0:da1fb7dd363f 66 unsigned short getVersion::getCompileDate(){
wbeaumont 0:da1fb7dd363f 67 if ( cdate == NULL ) return 0;
wbeaumont 0:da1fb7dd363f 68 else return 0;
wbeaumont 0:da1fb7dd363f 69 }
wbeaumont 0:da1fb7dd363f 70
wbeaumont 0:da1fb7dd363f 71 unsigned short getVersion::getCompileYear(){
wbeaumont 0:da1fb7dd363f 72
wbeaumont 0:da1fb7dd363f 73 if ( cdate == NULL ) return 0;
wbeaumont 0:da1fb7dd363f 74 else return 0;
wbeaumont 2:58f1d5a3f850 75 }
wbeaumont 2:58f1d5a3f850 76
wbeaumont 2:58f1d5a3f850 77 char* getVersion::getversioninfo(){
wbeaumont 2:58f1d5a3f850 78 return infostr;
wbeaumont 2:58f1d5a3f850 79 }
wbeaumont 2:58f1d5a3f850 80
wbeaumont 2:58f1d5a3f850 81