SMART_COMPONENTS_AudioCodec/AudioCodec.h

146 lines
4.5 KiB
C

//
// Created by ilya on 27.03.24.
//
#ifndef SMART_COMPONENTS_AUDIOCODEC_H
#define SMART_COMPONENTS_AUDIOCODEC_H
#include "nau88u10yg.h"
#include "AtCmdBase.h"
#include "BaseTypes/Strings.h"
#include "EraGlonassUveos_Dumper.h"
#define AUDIO_CODEC_CONFIG_LIMIT 60
typedef struct{
uint8_t reg;
uint32_t data;
}tAudioCodecRegisterData;
typedef struct {
tAudioCodecRegisterData configList[AUDIO_CODEC_CONFIG_LIMIT];
uint8_t regCounter;
}tAudioCodecConfig;
typedef enum {
UNDEFINDET_CAR = 0,
SGR_MICRO_BUSS_M2G_CAR = 1,
SGR_DUMP_TRUCK_N1G = 2,
PATRIOT_M1G_CAR = 3,
PROFI_N1_CAR = 4,
KIND_M2G_BUSS = 5,
HUNTER_N1G = 6,
} eCarType;
typedef struct {
tEraGlonassUveosDumperInterface *dumper;
tI2cIO *codec;
tAtCmd *atCmd;
tString128 *codecConfig;
tAudioCodecConfig audioCodecConfig;
uint16_t volume_levels[64];
uint16_t *volume_level;
bool state;
eCarType *carType;
} tAudioCodec;
void AudioCodec_Init(tAudioCodec *env,
tI2cIO *codec,
tAtCmd *atCmd,
tString128 *codecConfig,
tEraGlonassUveosDumperInterface *dumper,
eCarType *carType
);
typedef enum {
PA_CODEC_GAIN_57dB = 0b0000000000,
PA_CODEC_GAIN_56dB = 0b0000000001,
PA_CODEC_GAIN_55dB = 0b0000000010,
PA_CODEC_GAIN_54dB = 0b0000000011,
PA_CODEC_GAIN_53dB = 0b0000000100,
PA_CODEC_GAIN_52dB = 0b0000000101,
PA_CODEC_GAIN_51dB = 0b0000000110,
PA_CODEC_GAIN_50dB = 0b0000000111,
PA_CODEC_GAIN_49dB = 0b0000001000,
PA_CODEC_GAIN_48dB = 0b0000001001,
PA_CODEC_GAIN_47dB = 0b0000001010,
PA_CODEC_GAIN_46dB = 0b0000001011,
PA_CODEC_GAIN_45dB = 0b0000001100,
PA_CODEC_GAIN_44dB = 0b0000001101,
PA_CODEC_GAIN_43dB = 0b0000001110,
PA_CODEC_GAIN_42dB = 0b0000001111,
PA_CODEC_GAIN_41dB = 0b0000010000,
PA_CODEC_GAIN_40dB = 0b0000010001,
PA_CODEC_GAIN_39dB = 0b0000010010,
PA_CODEC_GAIN_38dB = 0b0000010011,
PA_CODEC_GAIN_37dB = 0b0000010100,
PA_CODEC_GAIN_36dB = 0b0000010101,
PA_CODEC_GAIN_35dB = 0b0000010110,
PA_CODEC_GAIN_34dB = 0b0000010111,
PA_CODEC_GAIN_33dB = 0b0000011000,
PA_CODEC_GAIN_32dB = 0b0000011001,
PA_CODEC_GAIN_31dB = 0b0000011010,
PA_CODEC_GAIN_30dB = 0b0000011011,
PA_CODEC_GAIN_29dB = 0b0000011100,
PA_CODEC_GAIN_28dB = 0b0000011110,
PA_CODEC_GAIN_27dB = 0b0000011111,
PA_CODEC_GAIN_26dB = 0b0000100000,
PA_CODEC_GAIN_25dB = 0b0000100001,
PA_CODEC_GAIN_24dB = 0b0000100010,
PA_CODEC_GAIN_23dB = 0b0000100011,
PA_CODEC_GAIN_22dB = 0b0000100100,
PA_CODEC_GAIN_21dB = 0b0000100101,
PA_CODEC_GAIN_20dB = 0b0000100110,
PA_CODEC_GAIN_19dB = 0b0000100111,
PA_CODEC_GAIN_18dB = 0b0000101000,
PA_CODEC_GAIN_17dB = 0b0000101001,
PA_CODEC_GAIN_16dB = 0b0000101010,
PA_CODEC_GAIN_15dB = 0b0000101011,
PA_CODEC_GAIN_14dB = 0b0000101100,
PA_CODEC_GAIN_13dB = 0b0000101101,
PA_CODEC_GAIN_12dB = 0b0000101110,
PA_CODEC_GAIN_11dB = 0b0000101111,
PA_CODEC_GAIN_10dB = 0b0000110000,
PA_CODEC_GAIN_09dB = 0b0000110001,
PA_CODEC_GAIN_08dB = 0b0000110010,
PA_CODEC_GAIN_07dB = 0b0000110011,
PA_CODEC_GAIN_06dB = 0b0000110100,
PA_CODEC_GAIN_05dB = 0b0000110101,
PA_CODEC_GAIN_04dB = 0b0000110110,
PA_CODEC_GAIN_03dB = 0b0000110111,
PA_CODEC_GAIN_02dB = 0b0000111000,
PA_CODEC_GAIN_01dB = 0b0000111001,
PA_CODEC_GAIN_00dB = 0b0000111011,
PA_CODEC_GAIN_1dB = 0b0000111010,
PA_CODEC_GAIN_2dB = 0b0000111011,
PA_CODEC_GAIN_3dB = 0b0000111100,
PA_CODEC_GAIN_4dB = 0b0000111101,
PA_CODEC_GAIN_5dB = 0b0000111110,
PA_CODEC_GAIN_6dB = 0b0000111111,
}CODEC_GAIN;
bool AudioCodec_StartUp(tAudioCodec *env);
void AudioCodec_SetOneRegistr(tAudioCodec *env, uint8_t adr, uint16_t reg);
void AudioCodec_SetVolumeLevel(tAudioCodec *env, uint16_t volume_level);
void AudioCodec_GetVolumeLevel(tAudioCodec *env, uint16_t *level);
bool xAudioCodec_WriteConfig(tAudioCodec *env);
void AudioCodec_GetOneRegistr(tAudioCodec *env, uint16_t regAdr, uint16_t *DataRegResult);
uint8_t ProtMethods_CodecGetLvlVoltIndex(tAudioCodec *env, uint8_t indexValule);
void AudioCodec_DumpConf(tAudioCodec *env, uint16_t volume_level);
void AudioCodec_SetVolumeExternal(tAudioCodec *env, uint16_t *volume_level);
#define AudioCodec_Config(CODEC) xAudioCodec_WriteConfigDefolte(CODEC,true)
#define AudioCodec_Config_whithModem(CODEC) xAudioCodec_WriteConfigDefolte(CODEC,false)
#endif //SMART_COMPONENTS_AUDIOCODEC_H