support all found sp/fp oocurances I found so far

This commit is contained in:
Denis Ahrens
2013-02-05 20:54:26 +01:00
parent 7ea2001e49
commit 77280ab43c
2 changed files with 105 additions and 4 deletions

View File

@ -77,9 +77,50 @@ void smc_init(){
void smc_close(){
SMCClose(conn);
}
void printFP1F(SMCVal_t val)
{
printf("%.5f ", ntohs(*(UInt16*)val.bytes) / 32768.0);
}
void printFP4C(SMCVal_t val)
{
printf("%.5f ", ntohs(*(UInt16*)val.bytes) / 4096.0);
}
void printFP5B(SMCVal_t val)
{
printf("%.5f ", ntohs(*(UInt16*)val.bytes) / 2048.0);
}
void printFP6A(SMCVal_t val)
{
printf("%.4f ", ntohs(*(UInt16*)val.bytes) / 1024.0);
}
void printFP79(SMCVal_t val)
{
printf("%.4f ", ntohs(*(UInt16*)val.bytes) / 512.0);
}
void printFP88(SMCVal_t val)
{
printf("%.3f ", ntohs(*(UInt16*)val.bytes) / 256.0);
}
void printFPA6(SMCVal_t val)
{
printf("%.2f ", ntohs(*(UInt16*)val.bytes) / 64.0);
}
void printFPC4(SMCVal_t val)
{
printf("%.2f ", ntohs(*(UInt16*)val.bytes) / 16.0);
}
void printFPE2(SMCVal_t val)
{
printf("%.02f ", _strtof(val.bytes, val.dataSize, 2));
printf("%.2f ", ntohs(*(UInt16*)val.bytes) / 4.0);
}
void printUInt(SMCVal_t val)
@ -89,7 +130,27 @@ void printUInt(SMCVal_t val)
void printSP78(SMCVal_t val)
{
printf("%d.%02u ", (signed char)*val.bytes, (*(val.bytes+1)) * 100 / 256);
printf("%.3f ", ((SInt16)ntohs(*(UInt16*)val.bytes)) / 256.0);
}
void printSP87(SMCVal_t val)
{
printf("%.3f ", ((SInt16)ntohs(*(UInt16*)val.bytes)) / 128.0);
}
void printSP96(SMCVal_t val)
{
printf("%.2f ", ((SInt16)ntohs(*(UInt16*)val.bytes)) / 64.0);
}
void printSPB4(SMCVal_t val)
{
printf("%.2f ", ((SInt16)ntohs(*(UInt16*)val.bytes)) / 16.0);
}
void printSPF0(SMCVal_t val)
{
printf("%.0f ", (float)ntohs(*(UInt16*)val.bytes));
}
void printSI8(SMCVal_t val)
@ -126,10 +187,34 @@ void printVal(SMCVal_t val)
(strcmp(val.dataType, DATATYPE_UINT16) == 0) ||
(strcmp(val.dataType, DATATYPE_UINT32) == 0))
printUInt(val);
else if (strcmp(val.dataType, DATATYPE_FPE2) == 0)
else if (strcmp(val.dataType, DATATYPE_FP1F) == 0 && val.dataSize == 2)
printFP1F(val);
else if (strcmp(val.dataType, DATATYPE_FP4C) == 0 && val.dataSize == 2)
printFP4C(val);
else if (strcmp(val.dataType, DATATYPE_FP5B) == 0 && val.dataSize == 2)
printFP5B(val);
else if (strcmp(val.dataType, DATATYPE_FP6A) == 0 && val.dataSize == 2)
printFP6A(val);
else if (strcmp(val.dataType, DATATYPE_FP79) == 0 && val.dataSize == 2)
printFP79(val);
else if (strcmp(val.dataType, DATATYPE_FP88) == 0 && val.dataSize == 2)
printFP88(val);
else if (strcmp(val.dataType, DATATYPE_FPA6) == 0 && val.dataSize == 2)
printFPA6(val);
else if (strcmp(val.dataType, DATATYPE_FPC4) == 0 && val.dataSize == 2)
printFPC4(val);
else if (strcmp(val.dataType, DATATYPE_FPE2) == 0 && val.dataSize == 2)
printFPE2(val);
else if (strcmp(val.dataType, DATATYPE_SP78) == 0 && val.dataSize == 2)
printSP78(val);
else if (strcmp(val.dataType, DATATYPE_SP87) == 0 && val.dataSize == 2)
printSP87(val);
else if (strcmp(val.dataType, DATATYPE_SP96) == 0 && val.dataSize == 2)
printSP96(val);
else if (strcmp(val.dataType, DATATYPE_SPB4) == 0 && val.dataSize == 2)
printSPB4(val);
else if (strcmp(val.dataType, DATATYPE_SPF0) == 0 && val.dataSize == 2)
printSPF0(val);
else if (strcmp(val.dataType, DATATYPE_SI8) == 0 && val.dataSize == 1)
printSI8(val);
else if (strcmp(val.dataType, DATATYPE_SI16) == 0 && val.dataSize == 2)

View File

@ -38,13 +38,29 @@
#define SMC_CMD_READ_PLIMIT 11
#define SMC_CMD_READ_VERS 12
#define DATATYPE_FP1F "fp1f"
#define DATATYPE_FP4C "fp4c"
#define DATATYPE_FP5B "fp5b"
#define DATATYPE_FP6A "fp6a"
#define DATATYPE_FP79 "fp79"
#define DATATYPE_FP88 "fp88"
#define DATATYPE_FPA6 "fpa6"
#define DATATYPE_FPC4 "fpc4"
#define DATATYPE_FPE2 "fpe2"
#define DATATYPE_SP78 "sp78"
#define DATATYPE_SP87 "sp87"
#define DATATYPE_SP96 "sp96"
#define DATATYPE_SPB4 "spb4"
#define DATATYPE_SPF0 "spf0"
#define DATATYPE_UINT8 "ui8 "
#define DATATYPE_UINT16 "ui16"
#define DATATYPE_UINT32 "ui32"
#define DATATYPE_SP78 "sp78"
#define DATATYPE_SI8 "si8 "
#define DATATYPE_SI16 "si16"
#define DATATYPE_PWM "{pwm"
typedef struct {