Add files via upload

This commit is contained in:
Sjef Verhoeven PE5PVB
2023-06-01 16:12:24 +02:00
committed by GitHub
parent 715216923d
commit ed302d83ec
14 changed files with 4826 additions and 0 deletions
+223
View File
@@ -0,0 +1,223 @@
#include "TEF6686.h"
#include <stdarg.h>
#define High_16bto8b(a) ((uint8_t)((a) >> 8))
#define Low_16bto8b(a) ((uint8_t)(a ))
#define Convert8bto16b(a) ((uint16_t)(((uint16_t)(*(a))) << 8 |((uint16_t)(*(a+1)))))
bool devTEF_Set_Cmd(TEF_MODULE module, uint8_t cmd, uint16_t len, ...)
{
uint16_t i;
uint8_t buf[20];
uint16_t temp;
va_list vArgs;
va_start(vArgs, len);
buf[0] = module;
buf[1] = cmd;
buf[2] = 1;
for (i = 3; i < len; i++)
{
temp = va_arg(vArgs, int);
buf[i++] = High_16bto8b(temp);
buf[i] = Low_16bto8b(temp);
}
va_end(vArgs);
return Tuner_WriteBuffer(buf, len);
}
bool devTEF_Get_Cmd(TEF_MODULE module, uint8_t cmd, uint8_t *receive, uint16_t len)
{
uint8_t buf[3];
buf[0] = module;
buf[1] = cmd;
buf[2] = 1;
Tuner_WriteBuffer(buf, 3);
return Tuner_ReadBuffer(receive, len);
}
bool devTEF_Radio_Tune_To (uint16_t frequency)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Tune_To, 7, 4, frequency);
}
bool devTEF_Radio_Tune_To_AM (uint16_t frequency)
{
return devTEF_Set_Cmd(TEF_AM, Cmd_Tune_To, 7, 1, frequency);
}
bool devTEF_Radio_Set_Bandwidth(uint16_t mode, uint16_t bandwidth, uint16_t control_sensitivity, uint16_t low_level_sensitivity)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_Bandwidth, 11, mode, bandwidth, control_sensitivity, low_level_sensitivity);
}
bool devTEF_Radio_Set_Bandwidth_AM(uint16_t mode, uint16_t bandwidth, uint16_t control_sensitivity, uint16_t low_level_sensitivity)
{
return devTEF_Set_Cmd(TEF_AM, Cmd_Set_Bandwidth, 7, mode, bandwidth, control_sensitivity, low_level_sensitivity);
}
bool devTEF_Radio_Set_LevelOffset(int16_t offset)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_LevelOffset, 5, offset - 70);
}
bool devTEF_Radio_Set_Highcut_Level(uint16_t mode, uint16_t start, uint16_t slope)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_Highcut_Level, 9, mode, start, slope);
}
bool devTEF_Radio_Set_Highcut_Noise(uint16_t mode, uint16_t start, uint16_t slope)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_Highcut_Noise, 9, mode, start, slope);
}
bool devTEF_Radio_Set_Highcut_Mph(uint16_t mode, uint16_t start, uint16_t slope)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_Highcut_Mph, 9, mode, start, slope);
}
bool devTEF_Radio_Set_Highcut_Max(uint16_t mode, uint16_t limit)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_Highcut_Max, 7, mode, limit);
}
bool devTEF_Radio_Set_Stereo_Level(uint16_t mode, uint16_t start, uint16_t slope)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_Stereo_Level, 9, mode, start, slope);
}
bool devTEF_Radio_Set_Stereo_Noise(uint16_t mode, uint16_t start, uint16_t slope)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_Stereo_Noise, 9, mode, start, slope);
}
bool devTEF_Radio_Set_Stereo_Mph(uint16_t mode, uint16_t start, uint16_t slope)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_Stereo_Mph, 9, mode, start, slope);
}
bool devTEF_Radio_Set_MphSuppression(uint16_t mph)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_MphSuppression, 5, mph, 0);
}
bool devTEF_Radio_Set_ChannelEqualizer(uint16_t eq)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_ChannelEqualizer, 5, eq, 0);
}
bool devTEF_Radio_Set_Stereo_Min(uint16_t mode)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_Stereo_Min, 7, mode);
}
bool devTEF_Radio_Set_RFAGC(uint16_t start)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_RFAGC, 7, start, 0, 0);
}
bool devTEF_Radio_Set_Deemphasis(uint16_t timeconstant)
{
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_Deemphasis, 5, timeconstant, 0);
}
bool devTEF_Audio_Set_Volume(int16_t volume)
{
return devTEF_Set_Cmd(TEF_AUDIO, Cmd_Set_Volume, 5, volume * 10);
}
bool devTEF_Audio_Set_Mute(uint16_t mode)
{
return devTEF_Set_Cmd(TEF_AUDIO, Cmd_Set_Mute, 5, mode);
}
bool devTEF_APPL_Set_OperationMode(uint16_t mode)
{
return devTEF_Set_Cmd(TEF_APPL, Cmd_Set_OperationMode, 5, mode);
}
bool devTEF_APPL_Get_Operation_Status (uint8_t *bootstatus)
{
uint8_t buf[2];
uint16_t r = devTEF_Get_Cmd(TEF_APPL, Cmd_Get_Operation_Status, buf, sizeof(buf));
*bootstatus = Convert8bto16b(buf);
return r;
}
bool devTEF_Radio_Get_Quality_Status (int16_t *level, uint16_t *usn, uint16_t *wam, int16_t *offset, uint16_t *bandwidth, uint16_t *mod)
{
uint8_t buf[14];
uint16_t r = devTEF_Get_Cmd(TEF_FM, Cmd_Get_Quality_Status, buf, sizeof(buf));
*level = Convert8bto16b(buf + 2);
*usn = Convert8bto16b(buf + 4);
*wam = Convert8bto16b(buf + 6);
*offset = Convert8bto16b(buf + 8);
*bandwidth = Convert8bto16b(buf + 10) / 10;
*mod = Convert8bto16b(buf + 12) / 10;
return r;
}
bool devTEF_Radio_Get_Quality_Status_AM (int16_t *level, uint16_t *usn, uint16_t *wam, int16_t *offset, uint16_t *bandwidth, uint16_t *mod)
{
uint8_t buf[14];
uint16_t r = devTEF_Get_Cmd(TEF_AM, Cmd_Get_Quality_Status, buf, sizeof(buf));
*level = Convert8bto16b(buf + 2);
*usn = Convert8bto16b(buf + 4);
*wam = Convert8bto16b(buf + 6);
*offset = Convert8bto16b(buf + 8);
*bandwidth = Convert8bto16b(buf + 10) / 10;
*mod = Convert8bto16b(buf + 12) / 10;
return r;
}
bool devTEF_Radio_Get_RDS_Data (uint16_t *status, uint16_t *A_block, uint16_t *B_block, uint16_t *C_block, uint16_t *D_block, uint16_t *dec_error)
{
uint8_t buf[12];
uint8_t r = devTEF_Get_Cmd(TEF_FM, Cmd_Get_RDS_Status, buf, sizeof(buf));
*status = Convert8bto16b(buf);
*A_block = Convert8bto16b(buf + 2);
*B_block = Convert8bto16b(buf + 4);
*C_block = Convert8bto16b(buf + 6);
*D_block = Convert8bto16b(buf + 8);
*dec_error = Convert8bto16b(buf + 10);
return r;
}
bool devTEF_Radio_Get_Stereo_Status(uint16_t *status)
{
uint8_t buf[2];
uint16_t r = devTEF_Get_Cmd(TEF_FM, Cmd_Get_Signal_Status, buf, sizeof(buf));
*status = Convert8bto16b(buf);
return r;
}
bool devTEF_Radio_Set_RDS(bool fullsearchrds)
{
if (fullsearchrds == true) {
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_RDS, 9, 3, 1, 0);
} else {
return devTEF_Set_Cmd(TEF_FM, Cmd_Set_RDS, 9, 1, 1, 0);
}
}
bool devTEF_Radio_Get_Identification (uint16_t *device, uint16_t *hw_version, uint16_t *sw_version)
{
uint8_t buf[6];
uint16_t r = devTEF_Get_Cmd(TEF_APPL, Cmd_Get_Identification, buf, sizeof(buf));
*device = Convert8bto16b(buf);
*hw_version = Convert8bto16b(buf + 2);
*sw_version = Convert8bto16b(buf + 4);
return r;
}