📄 test3dlg.cpp
字号:
// test3Dlg.cpp : implementation file
//
#include "stdafx.h"
#include "test3.h"
#include "test3Dlg.h"
#include "audio.h" // Jason Add for audio
#include <stdio.h>
#include "smbus.h"
enum {
IOCTL_SMBUS_READDATA = 0x80002000, // some arbirary base
IOCTL_SMBUS_WRITEDATA
};
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define SYS_BASE 0xB1900000
#define SYS_GPIO2 0xB170000C
#define SYS_GPIO_FUN (SYS_BASE + 0x2C)
#define SYS_TRIOUTCLR (SYS_BASE + 0x100)
#define SYS_OUTPUTRD (SYS_BASE + 0x108)
#define SYS_OUTPUTCLR (SYS_BASE + 0x10C)
#define SYS_PINSTATERD (SYS_BASE + 0x110)
#define MAX_TIME 2000
#define MENU_GPIO 10
/////////////////////////////////////////////////////////////////////////////
// CTest3Dlg dialog
CTest3Dlg::CTest3Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CTest3Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTest3Dlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CTest3Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTest3Dlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTest3Dlg, CDialog)
//{{AFX_MSG_MAP(CTest3Dlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTest3Dlg message handlers
BOOL CTest3Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
UINT32 UIntMEMACC_Value;
FILE *fp;
int i;
int j;
char fileName[256];
char exeName[256];
LPTSTR lpszCeAppMgr;
LPTSTR lpszBuf = NULL;
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CenterWindow(GetDesktopWindow()); // center to the hpc screen
j=0;
UIntMEMACC_Value =*(volatile unsigned long * const)SYS_PINSTATERD;
*(volatile unsigned long * const)SYS_PINSTATERD = UIntMEMACC_Value & 0xffffefff;
*(volatile unsigned long * )0xB500001C = 0xffff;
// Speaker_Vol=0; // Init Audio
// AudioInit(); // Jason Add
CanI2C_Write(0xC4, 0x80);
i=0;
while (1)
{
// CanI2C_Write(0x10, 0xaa);
if ( i )
{
i=0;
CanI2C_Write(0xC3, 0x1);
}
else
{
i=1;
CanI2C_Write(0xC3, 0x4);
}
RETAILMSG(1, (TEXT("Change Cam.... %d\r\n"), i) );
Sleep(5000);
}
this->SendMessage(WM_CLOSE);
return TRUE; // return TRUE unless you set the focus to a control
}
/////////////////////////////////// Jason Yu add Here
static const unsigned char VolTable[]=
{
0x7F, // mute// 0
0x5F, // -79dB
0x5E, // -78dB
0x5D, // -77dB
0x5C, // -76dB
0x5B, // -75dB
0x5A, // -74dB
0x59, // -73dB
0x58, // -72dB
0x57, // -71dB
0x56, // -70dB// 10
0x55, // -69dB
0x54, // -68dB
0x53, // -67dB
0x52, // -66dB
0x51, // -65dB
0x50, // -64dB
0x4F, // -63dB
0x4E, // -62dB
0x4D, // -61dB
0x4C, // -60dB// 20
0x4B, // -59dB
0x4A, // -58dB
0x49, // -57dB
0x48, // -56dB
0x47, // -55dB
0x46, // -54dB
0x45, // -53dB
0x44, // -52dB
0x43, // -51dB
0x42, // -50dB// 30
0x41, // -49dB
0x40, // -48dB
0x3F, // -47dB
0x3E, // -46dB
0x3D, // -45dB
0x3C, // -44dB
0x3B, // -43dB
0x3A, // -42dB
0x39, // -41dB
0x38, // -40dB// 40
0x37, // -39dB
0x36, // -38dB
0x35, // -37dB
0x34, // -36dB
0x33, // -35dB
0x32, // -34dB
0x31, // -33dB
0x30, // -32dB
0x2F, // -31dB
0x2E, // -30dB// 50
0x2D, // -29dB
0x2C, // -28dB
0x2B, // -27dB
0x2A, // -26dB
0x29, // -25dB
0x28, // -24dB
0x27, // -23dB
0x26, // -22dB
0x25, // -21dB
0x24, // -20dB// 60
0x23, // -19dB
0x22, // -18dB
0x21, // -17dB
0x20, // -16dB
0x1F, // -15dB
0x1E, // -14dB
0x1D, // -13dB
0x1C, // -12dB
0x1B, // -11dB
0x1A, // -10dB// 70
0x19, // -9dB
0x18, // -8dB
0x17, // -7dB
0x16, // -6dB
0x15, // -5dB
0x14, // -4dB
0x13, // -3dB
0x12, // -2dB
0x11, // -1dB
0x00, // +0dB// 80
0x01, // +1dB
0x02, // +2dB
0x03, // +3dB
0x04, // +4dB
0x05, // +5dB
0x06, // +6dB
0x07, // +7dB
0x08, // +8dB
0x09, // +9dB
0x0A, // +10dB// 90
0x0B, // +11dB
0x0C, // +12dB
0x0D, // +13dB
0x0E, // +14dB
0x0F // +15dB
};
static const unsigned char VolChangeTable[]=
{
0,6,11,16,20,24,26,28,30,32,34,
36,38,40,42,43,44,45,46,47,48,
49,50,51,52,53,54,55,56,57,58,
59,60,61,62,63,64,65,66,67,68,
68,69,70,71,72,73,74
};
static const unsigned char SourceTable[]=
{
1,0,2,3,6
};
static const unsigned char LoudTable[]=
{
0x00, // +0dB
// 0x01, // +1dB
// 0x02, // +2dB
// 0x03, // +3dB
/*0x04, // +4dB
0x05, // +5dB*/
0x06, // +6dB //low
/*0x07, // +7dB
0x08, // +8dB
0x09, // +9dB*/
0x0A, // +10dB //mid
/*0x0B, // +11dB
0x0C, // +12dB
0x0D, // +13dB
0x0E, // +14dB*/
0x0F // +15dB //high
};
static const unsigned char SubwTable[]=
{
0x00, // +0dB
0x01, // +1dB
0x02, // +2dB
0x03, // +3dB
0x04, // +4dB
0x05, // +5dB
0x06, // +6dB
0x07, // +7dB
0x08, // +8dB
0x09, // +9dB
// 0x0A, // +10dB
0x0B, // +11dB
// 0x0C, // +12dB
0x0D, // +13dB
// 0x0E, // +14dB
0x0F, // +15dB
0x7F // mute
};
static const unsigned char BasTreTable[]=
{
//0x0F, // -15dB
//0x0E, // -14dB
//0x0D, // -13dB
0x0C, // -12dB
//0x0B, // -11dB
0x0A, // -10dB
//0x09, // -9dB
0x08, // -8dB
//0x07, // -7dB
0x06, // -6dB
//0x05, // -5dB
0x04, // -4dB
//0x03, // -3dB
0x02, // -2dB
//0x01, // -1dB
0x10, // +0dB
//0x11, // +1dB
0x12, // +2dB
//0x13, // +3dB
0x14, // +4dB
//0x15, // +5dB
0x16, // +6dB
//0x17, // +7dB
0x18, // +8dB
//0x19, // +9dB
0x1A, // +10dB
//0x1B, // +11dB
0x1C//, +12dB
//0x1D, // +13dB
//0x1E, // +14dB
//0x1F, // +15dB
};
static const unsigned char BalFadTable[]=
{
0x00, // +0dB
0x13, // -3dB
0x15, // -5dB
0x18, // -8dB
0x1A, // -10dB
0x1D, // -13dB
0x1F, // -15dB
0x22, // -18dB
0x24, // -20dB
0x27, // -23dB
0x29, // -25dB
0x2C, // -28dB
0x7F // mute
};
static const unsigned char EQTable[]=
{
// Bass, Treble
10,10, //Classic
10,12, //Pop
12,12, //Rock
};
void CTest3Dlg::AudioCalcSource(int AudioFSource)
{
// if(F_2ZONE)
// AudioI2CBuf[7] |= 0x80;
// else
AudioI2CBuf[7] &= 0x7F;
AudioI2CBuf[0]=(AudioI2CBuf[0] & 0xF8)+SourceTable[AudioFSource];
AudioI2CBuf[7]=(AudioI2CBuf[7] & 0xF8)+SourceTable[AudioFSource];
// if(!F_2ZONE)return;
// AudioI2CBuf[10]=VolTable[VolChangeTable[AudioFVol]];
// AudioI2CBuf[11]=VolTable[VolChangeTable[AudioFVol]];
// AudioI2CBuf[12]=VolTable[VolChangeTable[AudioRVol]];
// AudioI2CBuf[13]=VolTable[VolChangeTable[AudioRVol]];
}
void CTest3Dlg::AudioInit(void)
{
//PD_AMUTE=1;//PE5--push-pull output for TDA7384 mute
//PO_AMUTE=1;
//Pin_AMUTE=0;
// Pin_SACLK=1;//push pull output
// PD_SACLK=1;
// PO_SACLK=1;
// PD_BEEP=1;
// PO_BEEP=1;
// MCCBCR=1;
AudioI2CBuf[0]=0x02; //y00110000;
AudioI2CBuf[1]=0xE0; //y11100000;
AudioI2CBuf[2]=0x07; //y00000111;
AudioI2CBuf[3]=0x18; //y00000000;
AudioI2CBuf[4]=0x00; //y00000000;
AudioI2CBuf[5]=0x00; //y00000000;
AudioI2CBuf[6]=0x00; //y00000000;
AudioI2CBuf[7]=0x02; //y00110000;
AudioI2CBuf[8]=0x40; //y01000000;
AudioI2CBuf[9]=0xF7; //y11110111;
AudioI2CBuf[10]=0x18; //y00000000;
AudioI2CBuf[11]=0x18; //y00000000;
AudioI2CBuf[12]=0x18; //y00000000;
AudioI2CBuf[13]=0x18; //y00000000;
AudioI2CBuf[14]=0x80; //y10000000;
AudioI2CBuf[15]=0x80; //y10000000;
AudioI2CBuf[16]=0x17; //y00010111;
AudioI2CBuf[17]=0x00; //y00000000;
// AudioVol=22;
// AudioFVol=22;
// AudioRVol=22;
// AudioBas=6;
// AudioBasFre=0;
// AudioBasQ=0;
// AudioTre=6;
// AudioTreFre=0;
// AudioMid=6;
// AudioMidFre=0;
// AudioMidQ=0;
// AudioIXBass=0;
// AudioIXBass_Bk=1;
// AudioIXBassFre=0;
// AudioSubw=13;
// AudioSubw_Bk=0;
// AudioSubwFre=0;
// AudioSubwFre_Bk=1;
// AudioBal=12;
// AudioFad=12;
// TAVol=14;
// AudioFSource=AUDIO_INPUT_RADIO;
// AudioRSource=AUDIO_INPUT_RADIO;
// F_2ZONE=0;
// F_LOUD=0;
// F_SUBW=0;
// F_3DSOUND=0;
// F_MUTE=0;
//AudioCalc(AUDIO_ALL_VAL);
AudioCalcSource(AUDIO_INPUT_AUX);
AudioI2C_WriteSend(AUDIO_AREA_ALL);
// AudioWorkMode=AUDIO_MODE_IDLE;
// AudioEQMode=EQ_MODE_OFF;
}
void CTest3Dlg::AudioI2C_WriteSend(int start, int end)
{ int i;
//TunerI2C_Write(0xff,0x0c);
for(i=start;i<=end;i++)
AudioI2C_Write(i,AudioI2CBuf[i]);
}
BOOL CTest3Dlg::AudioI2C_Write(char addr, char Data)
{
SMBUS_TRANSFER xfr;
HANDLE h;
char EEPROM[53];
int i,retVal;
unsigned long nwr = 0;
h = CreateFile(L"SMB1:", 0, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (h == INVALID_HANDLE_VALUE)
{
RETAILMSG(1, (L"FM: cannot open a handle to the SMBus\r\n"));
return FALSE;
}
xfr.Address = 0x44; // FM Tunner Write Add Address
xfr.DataSize = 1;
xfr.Register = addr;
xfr.Data[0] = Data;
if (!DeviceIoControl(h, IOCTL_SMBUS_WRITEDATA, &xfr, sizeof(SMBUS_TRANSFER), NULL, 0, (LPDWORD)&nwr, NULL))
RETAILMSG(1, (TEXT("Audio: SMBUS write data cannot be initialized !\r\n")));
CloseHandle(h);
return TRUE;
}
BOOL CTest3Dlg::CanI2C_Write(char addr, char Data)
{
SMBUS_TRANSFER xfr;
HANDLE h;
char EEPROM[53];
int i,retVal;
unsigned long nwr = 0;
h = CreateFile(L"SMB1:", 0, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (h == INVALID_HANDLE_VALUE)
{
RETAILMSG(1, (L"CAN: cannot open a handle to the SMBus\r\n"));
return FALSE;
}
xfr.Address = 0x21; //0x21 for CIM //0x78; // FM Tunner Write Add Address
xfr.DataSize = 1;
xfr.Register = addr;
xfr.Data[0] = Data;
if (!DeviceIoControl(h, IOCTL_SMBUS_WRITEDATA, &xfr, sizeof(SMBUS_TRANSFER), NULL, 0, (LPDWORD)&nwr, NULL))
RETAILMSG(1, (TEXT("Can Not initialized !\r\n")));
CloseHandle(h);
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -