for child

Fork of TRP105F_Spline by Akifumi Takahashi

TRP105FS_SPIWrapper.cpp

Committer:
aktk
Date:
2016-06-06
Revision:
11:d60fb729eacf
Parent:
8:9eaa9772e1e7
Child:
12:db5110d9d494

File content as of revision 11:d60fb729eacf:

#include "TRP105FS_SPIWrapper.h"
#include "CODE_SELECTIVE.h"

//
//  Make instance of static member
//
SPI
SPI_TRP105FS::spi(p5, p6, p7);  // mosi(out), miso(in), sclk(clock)

DigitalOut
SPI_TRP105FS::cs(p8);           // cs (the chip select signal)

//
//  For SPI, Define static method
//
int
SPI_TRP105FS::ADread(int channel)
{
    int command_high=0x06|((channel&0x04)>>2);
    int command_low=(channel&0x03)<<14;
    __disable_irq(); // 割り込み禁止
    cs = 0;
    spi.write(command_high);
    int resultbyte=spi.write(command_low) & 0xfff;
    cs = 1;
    __enable_irq(); // 割り込み許可
    return(resultbyte);
}

//
//  Define Constructor
//
SPI_TRP105FS::SPI_TRP105FS()
    :channel(0)
    ,nsample(5)
    ,trp(TRP105FS(nsample))
    ,filename("\0")
{}

SPI_TRP105FS::SPI_TRP105FS(unsigned int arg_ch)
    :channel(arg_ch)
    ,nsample(5)
    ,trp(TRP105FS(nsample))
    ,filename("\0")
{}

void
SPI_TRP105FS::setSample(unsigned short arg_x)
{
    trp.setSample(arg_x, (unsigned short)ADread(channel));
}

void
SPI_TRP105FS::calibrate()
{
    trp.calibrate();
}

unsigned short
SPI_TRP105FS::getDistance()
{
    return trp.getDistance((unsigned short)ADread(channel));
}

unsigned int
SPI_TRP105FS::getChannel()
{
    return channel;
}

unsigned int
SPI_TRP105FS::getNsample()
{
    return nsample;
}

void
SPI_TRP105FS::savedata()
{
    if (filename[0] == '\0')
        sprintf(filename, "SENSOR%02d.SAV", channel);
    trp.saveSetting(filename);
}

void
SPI_TRP105FS::loaddata()
{
    if (filename[0] == '\0')
        sprintf(filename, "SENSOR%02d.SAV", channel);
    trp.loadSetting(filename);
}
void
SPI_TRP105FS::printCalibrationiLOG()
{
    trp.printOutData("ADLOG.TXT");
#if defined(HAS_COM_TO_CONSOLE)
    trp.printThresholds();
#endif
}