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:
Fri Jan 13 13:52:58 2017 +0000
Revision:
4:8cbf46e5e3e5
Parent:
2:58f1d5a3f850
Child:
7:b091a268b726
added version in dev_interface_def.h  , added new types, added method to retrieve dev_interface_def  via get version

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