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:
Tue Sep 10 11:20:07 2019 +0000
Revision:
7:b091a268b726
Parent:
4:8cbf46e5e3e5
to make it compatible for other platforms see; https://github.com/wimbeaumont/peripheral_dev_tst; ( mbed os5  based)  but this still works for mbed os2

Who changed what in which revision?

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