146 lines
4.5 KiB
C
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
|