910 lines
36 KiB
C
910 lines
36 KiB
C
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
// MODULE : ZAC3.C
|
||
// PURPOSE : Zoran AC3 specific code
|
||
// AUTHOR : JBS Yadawa
|
||
// CREATED : 7/20/96
|
||
//
|
||
//
|
||
// Copyright (C) 1996 SGS-THOMSON Microelectronics
|
||
//
|
||
//
|
||
// REVISION HISTORY:
|
||
// -----------------
|
||
//
|
||
// DATE : COMMENTS
|
||
// ---- : --------
|
||
//
|
||
// 12-28-96 : AC3 structure added - JBS
|
||
// 1-1-97 : use of status bit to figure out access to ABB - JBS
|
||
// 1-15-97 : Added BypassMode and normal mode - JBS
|
||
// 3-18-97 : Added Error handling for AC3 - JBS
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
#include "strmini.h"
|
||
#include "stdefs.h"
|
||
#include "board.h"
|
||
#include "i20reg.h"
|
||
#include "bt856.h"
|
||
#include "memio.h"
|
||
#include "zac3.h"
|
||
#include "sti3520a.h"
|
||
#include "hwcodec.h"
|
||
#include "ksmedia.h"
|
||
|
||
#define POSTOFFICEREG 0x200
|
||
#define SPIDO 0x07
|
||
#define SPIDI 0x06
|
||
#define SPICLK 0x05
|
||
#define SPIENA 0x04
|
||
#define PARAMSIZE 9
|
||
|
||
//extern PCODEC pCodec;
|
||
|
||
static void NEARAPI Ac3SPIStart(void);
|
||
static void NEARAPI Ac3SPIStop(void);
|
||
static BYTE NEARAPI Ac3SPISendByte(BYTE data);
|
||
static BYTE NEARAPI Ac3SPISendSeq(short Num, BYTE FAR *Data);
|
||
void NEARAPI Ac3SPIReadBack(BYTE command, short numresult, BYTE *result);
|
||
static void NEARAPI Ac3Command(BYTE command);
|
||
|
||
#define MINABL 40
|
||
|
||
extern ULONG audiodecoutmode;
|
||
extern PVIDEO pVideo;
|
||
// static variables only used here
|
||
static AC3 Ac3;
|
||
PAC3 pAc3;
|
||
|
||
/*
|
||
* Only one of the followng two lines must be in at one time
|
||
*/
|
||
|
||
// The next line will give you AC3 decode downmixed to stereo out ...
|
||
BYTE CfgParams[PARAMSIZE] = {AC3_CFG, 0xD0,0x08,0x89,0x09,0x14,0x02,0x02,0x06};
|
||
|
||
BYTE CfgParamsBypass[PARAMSIZE] = {AC3_CFG, 0xD0,0x08,0x89,0x09,0x34,0x02,0x02,0x06};
|
||
|
||
// The next line will give you SPDIF AC3 undecode pass through
|
||
//BYTE CfgParams[PARAMSIZE] = {AC3_CFG, 0xD0,0x08,0x89,0x09,0x34,0x02,0x02,0x06};
|
||
|
||
BYTE AC3Params[PARAMSIZE] = {AC3_AC3, 0x10,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF};
|
||
|
||
#define ZCODE_SIZE 3789
|
||
static Zcode[ZCODE_SIZE] = {
|
||
0x90, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x03, 0x9C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||
0xB8, 0x0C, 0x00, 0x00, 0xB0, 0x3C, 0x36, 0xDE, 0x00, 0x42, 0x38, 0x0D, 0x00, 0x05, 0x32,
|
||
0x10, 0x0F, 0xF5, 0x34, 0x20, 0x0F, 0xFA, 0x30, 0x2D, 0x03, 0xEC, 0x00, 0x50, 0x00, 0x00,
|
||
0x3C, 0x1D, 0x00, 0x35, 0x34, 0x00, 0x0D, 0xC6, 0x2C, 0x30, 0x00, 0x07, 0x38, 0x00, 0x00,
|
||
0x02, 0x32, 0x1D, 0x03, 0xEC, 0x34, 0x0D, 0x03, 0xE1, 0x2C, 0x10, 0x00, 0x40, 0x30, 0x0D,
|
||
0x03, 0xE1, 0x2C, 0xB0, 0x00, 0x01, 0x3C, 0x6D, 0x00, 0x1A, 0x00, 0x00, 0xCC, 0x4B, 0x00,
|
||
0x00, 0xCC, 0x0B, 0x3A, 0xDE, 0x16, 0x12, 0x3A, 0xFD, 0x00, 0x17, 0x00, 0x03, 0xEB, 0xC1,
|
||
0x38, 0x00, 0x05, 0x40, 0x32, 0x1D, 0x03, 0xE1, 0x3A, 0xDD, 0x00, 0x1E, 0x38, 0x00, 0x00,
|
||
0x02, 0x32, 0x10, 0x0F, 0xFA, 0x2C, 0xB0, 0x00, 0x02, 0x3C, 0x1D, 0x00, 0x39, 0x38, 0x00,
|
||
0x06, 0x00, 0x32, 0x10, 0x0F, 0x81, 0xB0, 0x00, 0x00, 0x00, 0x30, 0x0D, 0x03, 0xD8, 0x30,
|
||
0x0D, 0x03, 0xD5, 0x30, 0x0D, 0x03, 0xD6, 0x00, 0x03, 0xC8, 0x76, 0x32, 0x0D, 0x03, 0xF6,
|
||
0x32, 0x0D, 0x03, 0xF7, 0x34, 0x00, 0x0F, 0xC5, 0x2C, 0x00, 0x08, 0x00, 0x3C, 0x1D, 0x00,
|
||
0x32, 0x38, 0x00, 0x00, 0x00, 0x32, 0x10, 0x0F, 0x8D, 0x38, 0x0D, 0x02, 0x39, 0x32, 0x10,
|
||
0x0F, 0xF8, 0x00, 0x00, 0xB8, 0x0C, 0x00, 0x00, 0xB0, 0x3C, 0x38, 0x00, 0x03, 0x80, 0x32,
|
||
0x10, 0x0D, 0xCB, 0x3A, 0xDD, 0x01, 0x57, 0x38, 0x00, 0x00, 0x02, 0x32, 0x10, 0x0F, 0xFA,
|
||
0x3C, 0x6D, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x32, 0x10, 0x0D,
|
||
0xCA, 0x34, 0x00, 0x0D, 0xCA, 0x00, 0x40, 0x00, 0x00, 0x3C, 0x6D, 0x00, 0x7E, 0x00, 0x00,
|
||
0xBC, 0x4B, 0x00, 0x00, 0xBC, 0x0B, 0x38, 0x00, 0x00, 0x01, 0x32, 0x10, 0x0D, 0xC4, 0x34,
|
||
0x2D, 0x03, 0xEC, 0x2C, 0xB0, 0x00, 0x00, 0x3C, 0x1D, 0x00, 0x47, 0x34, 0x7D, 0x03, 0xD8,
|
||
0x00, 0x00, 0xB3, 0x87, 0x3A, 0xDD, 0x00, 0x4B, 0x00, 0x00, 0xC3, 0x87, 0x30, 0x7D, 0x03,
|
||
0xD8, 0x3A, 0xDD, 0x01, 0xB1, 0x3A, 0xFD, 0x00, 0x4B, 0x00, 0x03, 0xEB, 0xC1, 0x3A, 0xDE,
|
||
0x18, 0x4E, 0x3A, 0xFD, 0x00, 0x4E, 0x00, 0x03, 0xEB, 0xC1, 0x3A, 0xDE, 0x18, 0xAC, 0x3A,
|
||
0xFD, 0x00, 0x51, 0x00, 0x03, 0xEB, 0xC1, 0x3A, 0xDD, 0x01, 0x86, 0x3A, 0xFD, 0x00, 0x54,
|
||
0x00, 0x03, 0xEB, 0xC1, 0x3A, 0xDD, 0x01, 0x6E, 0x3A, 0xFD, 0x00, 0x57, 0x00, 0x03, 0xEB,
|
||
0xC1, 0x3A, 0xDD, 0x01, 0x5A, 0x3A, 0xFD, 0x00, 0x5A, 0x00, 0x03, 0xEB, 0xC1, 0x34, 0x00,
|
||
0x0D, 0xC4, 0x00, 0x40, 0x00, 0x00, 0x3C, 0x6D, 0x00, 0xB7, 0x34, 0x10, 0x0D, 0xCB, 0x34,
|
||
0x00, 0x0D, 0xC9, 0x34, 0x80, 0x0D, 0xC1, 0x35, 0x00, 0x0D, 0xFD, 0x32, 0x10, 0x0D, 0xDA,
|
||
0xB0, 0x50, 0x60, 0x00, 0x30, 0x80, 0x0D, 0xD6, 0x14, 0x90, 0x00, 0x00, 0x00, 0x03, 0xC0,
|
||
0x18, 0x30, 0x20, 0x0D, 0xC9, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x0D, 0xC8, 0x39, 0x00,
|
||
0x00, 0x00, 0x38, 0x00, 0x00, 0x06, 0x32, 0x10, 0x0D, 0xD5, 0x34, 0x00, 0x0F, 0x88, 0x32,
|
||
0x10, 0x0D, 0xD7, 0x34, 0x00, 0x0D, 0xFD, 0x32, 0x10, 0x0D, 0xD8, 0x34, 0x00, 0x0D, 0xF2,
|
||
0x32, 0x10, 0x0D, 0xD9, 0xB0, 0x03, 0xD0, 0x81, 0x38, 0x80, 0x0D, 0xD5, 0x36, 0xDE, 0x00,
|
||
0x41, 0x3A, 0xFD, 0x00, 0x77, 0x00, 0x03, 0xEB, 0xC1, 0x00, 0x40, 0x00, 0x00, 0x3C, 0x1D,
|
||
0x00, 0xB7, 0x30, 0x00, 0x0D, 0xC7, 0x34, 0x20, 0x0D, 0xC4, 0x3A, 0xDD, 0x00, 0xB7, 0x00,
|
||
0x00, 0xB0, 0x82, 0x30, 0x20, 0x0D, 0xC4, 0x3A, 0xDE, 0x18, 0xAC, 0x3A, 0xFD, 0x00, 0x81,
|
||
0x00, 0x03, 0xEB, 0xC1, 0x3A, 0xDD, 0x01, 0x6E, 0x3A, 0xFD, 0x00, 0x84, 0x00, 0x03, 0xEB,
|
||
0xC1, 0x34, 0x00, 0x0D, 0xCA, 0x38, 0x10, 0x00, 0x02, 0x04, 0x40, 0x00, 0x00, 0x3C, 0x1D,
|
||
0x00, 0xA5, 0x34, 0x00, 0x0D, 0xCA, 0x38, 0x10, 0x00, 0x05, 0x04, 0x40, 0x00, 0x00, 0x3C,
|
||
0x1D, 0x00, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x30, 0x00, 0x01, 0x3C, 0x1D, 0x00, 0x99,
|
||
0x38, 0x23, 0x00, 0x00, 0x34, 0x3D, 0x03, 0xD8, 0x00, 0x00, 0xD4, 0x43, 0x3C, 0x6D, 0x00,
|
||
0xB7, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x30, 0x00, 0x04, 0x3C, 0x1D, 0x00, 0x99, 0x00, 0x00,
|
||
0x00, 0x00, 0x38, 0x22, 0x55, 0x55, 0x38, 0x22, 0xAA, 0xAB, 0x00, 0x00, 0xD3, 0x83, 0x3C,
|
||
0x1D, 0x00, 0xB7, 0x34, 0x00, 0x0D, 0xCB, 0x44, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
||
0x34, 0x10, 0x0F, 0x8D, 0xA2, 0x00, 0x00, 0x00, 0x3C, 0x4D, 0x00, 0xB7, 0x00, 0x00, 0x00,
|
||
0x00, 0x32, 0x10, 0x0F, 0x8D, 0x3A, 0xDD, 0x00, 0xB7, 0x00, 0x00, 0xC0, 0x3C, 0x34, 0x00,
|
||
0x0D, 0xC4, 0x00, 0x40, 0x00, 0x00, 0x3C, 0x6D, 0x00, 0xB7, 0x34, 0x00, 0x0D, 0xC8, 0x32,
|
||
0x10, 0x0D, 0xD6, 0x34, 0x00, 0x0D, 0xC9, 0x32, 0x10, 0x0D, 0xDA, 0x34, 0x00, 0x0D, 0xC7,
|
||
0x38, 0x10, 0x00, 0x02, 0x38, 0x80, 0x0D, 0xD5, 0x36, 0xDE, 0x00, 0x41, 0x3A, 0xFD, 0x00,
|
||
0xB2, 0x00, 0x03, 0xEB, 0xC1, 0x00, 0x40, 0x00, 0x00, 0x3C, 0x1D, 0x00, 0xB7, 0x34, 0x20,
|
||
0x0D, 0xC4, 0x00, 0x00, 0xB0, 0xC2, 0x30, 0x20, 0x0D, 0xC4, 0x38, 0x00, 0x00, 0x0F, 0x32,
|
||
0x10, 0x0D, 0xDB, 0x34, 0x00, 0x0D, 0xFD, 0x32, 0x10, 0x0D, 0xDE, 0x34, 0x00, 0x0D, 0xF2,
|
||
0x32, 0x10, 0x0D, 0xDF, 0x34, 0x00, 0x0D, 0xF3, 0x2C, 0x00, 0x00, 0x0F, 0x32, 0x10, 0x0D,
|
||
0xE8, 0x38, 0x00, 0x00, 0x00, 0x32, 0x10, 0x0D, 0xE9, 0x38, 0x00, 0x0D, 0xCF, 0x32, 0x10,
|
||
0x0D, 0xE0, 0x34, 0x00, 0x0D, 0xFE, 0x32, 0x10, 0x0D, 0xE1, 0x34, 0x00, 0x0D, 0xFF, 0x32,
|
||
0x10, 0x0D, 0xE2, 0x34, 0x00, 0x0D, 0xF1, 0x32, 0x10, 0x0D, 0xE3, 0x34, 0x00, 0x0F, 0x88,
|
||
0x32, 0x10, 0x0D, 0xDD, 0x34, 0x00, 0x0D, 0xC1, 0x32, 0x10, 0x0D, 0xDC, 0x34, 0x00, 0x0D,
|
||
0xF4, 0x32, 0x10, 0x0D, 0xE7, 0x34, 0x00, 0x0D, 0xCA, 0x32, 0x10, 0x0D, 0xE4, 0x34, 0x00,
|
||
0x0D, 0xCC, 0x32, 0x10, 0x0D, 0xE5, 0x34, 0x00, 0x0D, 0xCD, 0x32, 0x10, 0x0D, 0xE6, 0x34,
|
||
0x0D, 0x03, 0xE3, 0x38, 0x10, 0x00, 0x0C, 0x16, 0x43, 0xD1, 0x01, 0x18, 0x40, 0x00, 0x00,
|
||
0x34, 0x10, 0x0D, 0xCE, 0x16, 0x43, 0xD3, 0x02, 0x3C, 0x1D, 0x00, 0xF0, 0x16, 0x53, 0xD4,
|
||
0x03, 0x30, 0x20, 0x0D, 0xCE, 0x34, 0x0D, 0x03, 0xE2, 0x2C, 0x00, 0x00, 0x07, 0x2C, 0x30,
|
||
0x00, 0x02, 0x3C, 0x3D, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xD0, 0x00, 0x00, 0x30,
|
||
0x20, 0x0D, 0xCE, 0x38, 0x00, 0x00, 0x02, 0x32, 0x10, 0x0D, 0xE3, 0x38, 0x07, 0xFF, 0xFF,
|
||
0x32, 0x10, 0x0D, 0xE7, 0x38, 0x0E, 0x2B, 0xA9, 0x32, 0x10, 0x0D, 0xE0, 0x38, 0x0E, 0x2B,
|
||
0xAF, 0x32, 0x10, 0x0D, 0xE1, 0x38, 0x0E, 0x2B, 0xB5, 0x32, 0x10, 0x0D, 0xE2, 0x34, 0x00,
|
||
0x0D, 0xE8, 0x00, 0x40, 0x00, 0x00, 0x3C, 0x6D, 0x00, 0xF6, 0x34, 0x00, 0x0D, 0xC4, 0x38,
|
||
0x80, 0x0D, 0xDB, 0x06, 0x00, 0x00, 0x00, 0x34, 0x7D, 0x03, 0xD8, 0x00, 0x00, 0xD3, 0x87,
|
||
0x3C, 0x1D, 0x00, 0xFD, 0x34, 0x10, 0x0F, 0xFC, 0x00, 0x48, 0x00, 0x00, 0x3C, 0x6D, 0x00,
|
||
0xFF, 0x00, 0x00, 0x00, 0x00, 0x38, 0x10, 0x00, 0x03, 0x38, 0x0F, 0xFF, 0xFF, 0x36, 0xDE,
|
||
0x00, 0x41, 0x3A, 0xFD, 0x01, 0x02, 0x00, 0x03, 0xEB, 0xC1, 0x30, 0x00, 0x0D, 0xC5, 0x34,
|
||
0x00, 0x0D, 0xCE, 0x2C, 0x00, 0x00, 0x10, 0x3C, 0x1D, 0x01, 0x26, 0x38, 0x00, 0x00, 0x20,
|
||
0x32, 0x10, 0x0D, 0xE4, 0x38, 0x00, 0x00, 0x0B, 0x32, 0x10, 0x0D, 0xDB, 0x38, 0x0E, 0x2B,
|
||
0xA9, 0x32, 0x10, 0x0D, 0xDC, 0x38, 0x0E, 0x2B, 0xAF, 0x32, 0x10, 0x0D, 0xDD, 0x38, 0x0E,
|
||
0x2B, 0xB5, 0x32, 0x10, 0x0D, 0xDE, 0x38, 0x00, 0x00, 0x00, 0x32, 0x10, 0x0D, 0xDF, 0x38,
|
||
0x00, 0x0D, 0xCF, 0x32, 0x10, 0x0D, 0xE0, 0x34, 0x00, 0x0D, 0xFE, 0x32, 0x10, 0x0D, 0xE1,
|
||
0x34, 0x00, 0x0D, 0xFF, 0x32, 0x10, 0x0D, 0xE2, 0x34, 0x00, 0x0D, 0xF4, 0x32, 0x10, 0x0D,
|
||
0xE5, 0x34, 0x0D, 0x03, 0xE2, 0x2C, 0x00, 0xC0, 0x00, 0x2E, 0x3F, 0xFF, 0xFE, 0x34, 0x10,
|
||
0x0D, 0xF1, 0x2C, 0x41, 0xCF, 0xFF, 0x18, 0x08, 0x00, 0x00, 0x32, 0x50, 0x0D, 0xE3, 0xB0,
|
||
0x03, 0xD1, 0x41, 0x38, 0x80, 0x0D, 0xDB, 0x36, 0xDE, 0x00, 0x41, 0x3A, 0xFD, 0x01, 0x26,
|
||
0x00, 0x03, 0xEB, 0xC1, 0x38, 0x00, 0x00, 0x01, 0x3A, 0xDE, 0x17, 0xC7, 0x3A, 0xFD, 0x01,
|
||
0x2A, 0x00, 0x03, 0xEB, 0xC1, 0x36, 0xD0, 0x0F, 0x8C, 0x3A, 0xFD, 0x01, 0x2D, 0x00, 0x03,
|
||
0xEB, 0xC1, 0x3A, 0xDE, 0x18, 0xE5, 0x3A, 0xFD, 0x01, 0x30, 0x00, 0x03, 0xEB, 0xC1, 0x34,
|
||
0x00, 0x0D, 0xCA, 0x2C, 0x30, 0x00, 0x05, 0x3C, 0x5D, 0x01, 0x36, 0x12, 0x03, 0xD0, 0x01,
|
||
0x30, 0x00, 0x0D, 0xCA, 0x30, 0x10, 0x0D, 0xCA, 0x38, 0x00, 0x00, 0x08, 0x32, 0x1D, 0x03,
|
||
0xE0, 0x34, 0x0D, 0x03, 0xEC, 0x2C, 0x30, 0x00, 0x00, 0x3C, 0x1D, 0x01, 0x3E, 0x34, 0x00,
|
||
0x0D, 0xC6, 0x2C, 0x10, 0x05, 0x00, 0x2C, 0x10, 0x00, 0x40, 0x34, 0x20, 0x0D, 0xC5, 0x34,
|
||
0x10, 0x0D, 0xC4, 0x00, 0x4B, 0xD0, 0xC1, 0x3C, 0x1D, 0x01, 0x45, 0x0C, 0x50, 0x00, 0x00,
|
||
0x18, 0x80, 0x00, 0x00, 0x2C, 0x10, 0x40, 0x00, 0x32, 0x1D, 0x03, 0xE1, 0x38, 0x0D, 0x03,
|
||
0xE0, 0x32, 0x10, 0x0F, 0xFB, 0x34, 0x00, 0x0F, 0xC5, 0x2C, 0x00, 0x10, 0x00, 0x3C, 0x1D,
|
||
0x01, 0x57, 0x34, 0x7D, 0x03, 0xD8, 0x00, 0x00, 0xD3, 0x47, 0x3C, 0x1D, 0x01, 0x51, 0x00,
|
||
0x00, 0xC8, 0x4C, 0x00, 0x00, 0xC0, 0xBC, 0x00, 0x00, 0xB0, 0xBC, 0x34, 0x00, 0x0D, 0xC4,
|
||
0x00, 0x40, 0x00, 0x00, 0x3C, 0x1D, 0x01, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
|
||
0xFC, 0x00, 0x00, 0xB0, 0xFC, 0x00, 0x03, 0xF0, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||
0x00, 0x00, 0x34, 0x5D, 0x03, 0xD8, 0x00, 0x00, 0xD4, 0xC5, 0x3C, 0x1D, 0x01, 0x6A, 0x34,
|
||
0x0D, 0x03, 0xD3, 0x36, 0x0D, 0x03, 0xD4, 0x2C, 0x00, 0xFF, 0xFF, 0x2E, 0x20, 0x00, 0x07,
|
||
0x00, 0x03, 0xC8, 0x83, 0x2E, 0x20, 0x00, 0x01, 0x00, 0x03, 0xC0, 0xE2, 0x2E, 0x2F, 0xFF,
|
||
0xFC, 0x2E, 0x3F, 0xFF, 0xFF, 0x2E, 0x2F, 0xFF, 0xFA, 0x3A, 0xDD, 0x01, 0x6A, 0x00, 0x03,
|
||
0xC8, 0x76, 0x32, 0x0D, 0x03, 0xF7, 0x00, 0x00, 0xC4, 0xC5, 0x00, 0x03, 0xF0, 0x2D, 0x00,
|
||
0x00, 0xC4, 0x45, 0x30, 0x5D, 0x03, 0xD8, 0x34, 0x0D, 0x03, 0xD8, 0x00, 0x00, 0xD3, 0xA1,
|
||
0x3C, 0x1D, 0x01, 0x74, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x48, 0x00, 0x00, 0x3A, 0x40, 0x00,
|
||
0xF0, 0x34, 0x0D, 0x03, 0xD5, 0x36, 0x0D, 0x03, 0xD6, 0xA2, 0x00, 0x00, 0x00, 0x32, 0x1D,
|
||
0x03, 0xD5, 0x3B, 0x80, 0x00, 0x00, 0x32, 0x0D, 0x03, 0xD6, 0x00, 0x03, 0xC8, 0x76, 0x32,
|
||
0x0D, 0x03, 0xF6, 0x36, 0x0D, 0x03, 0xF7, 0x00, 0x03, 0xCD, 0xA1, 0xA2, 0x03, 0xD0, 0x78,
|
||
0x00, 0x03, 0xC0, 0x01, 0x32, 0x4D, 0x03, 0xE8, 0x2E, 0x6F, 0xFF, 0xF0, 0x32, 0x4D, 0x03,
|
||
0xE7, 0x00, 0x03, 0xF0, 0x2D, 0x00, 0x03, 0xC8, 0x76, 0x32, 0x0D, 0x03, 0xF7, 0x34, 0x00,
|
||
0x0F, 0xC5, 0x00, 0x00, 0xD1, 0x61, 0x3C, 0x1D, 0x01, 0xAE, 0x34, 0x7D, 0x03, 0xD8, 0x00,
|
||
0x00, 0xD3, 0x87, 0x00, 0x00, 0xB3, 0x07, 0x3C, 0x1D, 0x01, 0x96, 0x34, 0x00, 0x0F, 0xFC,
|
||
0x00, 0x00, 0xD0, 0x21, 0x3C, 0x1D, 0x01, 0x96, 0x34, 0x00, 0x0D, 0xC4, 0x00, 0x40, 0x00,
|
||
0x00, 0x3C, 0x6D, 0x01, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||
0xC3, 0x07, 0x30, 0x7D, 0x03, 0xD8, 0x34, 0x0D, 0x03, 0xE3, 0x2C, 0x00, 0x07, 0x00, 0x2E,
|
||
0x30, 0x00, 0x04, 0x2C, 0x10, 0x00, 0x10, 0x32, 0x1D, 0x03, 0xED, 0x34, 0x00, 0x0D, 0xC1,
|
||
0x32, 0x1D, 0x03, 0xF3, 0x34, 0x30, 0x0D, 0xCB, 0x30, 0x3D, 0x03, 0xEE, 0x38, 0x20, 0x0B,
|
||
0xFC, 0xB6, 0x90, 0x00, 0x00, 0x30, 0x2D, 0x03, 0xEF, 0x2E, 0xCF, 0xFA, 0x06, 0x2E, 0xDA,
|
||
0xAA, 0xAB, 0x3B, 0x80, 0x00, 0x00, 0x2C, 0xCF, 0xFF, 0xFE, 0x00, 0x00, 0xD0, 0x0F, 0x3C,
|
||
0x1D, 0x01, 0xAC, 0x38, 0x0D, 0x03, 0x3B, 0x32, 0x10, 0x0F, 0xF9, 0x14, 0xD8, 0x00, 0x00,
|
||
0x3B, 0x80, 0x00, 0x01, 0x30, 0x3D, 0x03, 0xF8, 0x00, 0x03, 0xF0, 0x2D, 0x00, 0x00, 0x00,
|
||
0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x0F, 0x8D, 0x00, 0x43, 0xC3, 0xC0, 0x3C, 0x4D,
|
||
0x01, 0xBA, 0x34, 0x10, 0x0D, 0xC2, 0x04, 0x08, 0x00, 0x00, 0x3C, 0x6D, 0x01, 0xB1, 0x38,
|
||
0x00, 0x00, 0x07, 0x32, 0x10, 0x0D, 0xC6, 0x3A, 0xDD, 0x02, 0x18, 0x34, 0x00, 0x0D, 0xC0,
|
||
0x3A, 0xDD, 0x02, 0x2E, 0x3A, 0xFD, 0x01, 0xBE, 0x00, 0x03, 0xEB, 0xC1, 0x2E, 0x0F, 0xFF,
|
||
0xF6, 0x3C, 0x3D, 0x01, 0xC5, 0x38, 0x10, 0x00, 0x01, 0x38, 0x20, 0x03, 0x80, 0x3A, 0xDD,
|
||
0x02, 0x18, 0x30, 0x20, 0x0F, 0x8D, 0x00, 0x00, 0xC0, 0x3C, 0x20, 0x40, 0x00, 0x00, 0x30,
|
||
0x00, 0x0D, 0xE1, 0x34, 0x00, 0x0D, 0xC0, 0x32, 0x10, 0x0D, 0xDC, 0x34, 0x00, 0x0F, 0x88,
|
||
0x32, 0x10, 0x0D, 0xDD, 0x31, 0x60, 0x0D, 0xDE, 0x34, 0x00, 0x0D, 0xF2, 0x32, 0x10, 0x0D,
|
||
0xDF, 0x38, 0x00, 0x00, 0x00, 0x32, 0x10, 0x0D, 0xE0, 0x38, 0x80, 0x0D, 0xDB, 0xB0, 0x03,
|
||
0xD2, 0x01, 0x3A, 0xDE, 0x19, 0x92, 0x3A, 0xFD, 0x01, 0xD5, 0x00, 0x03, 0xEB, 0xC1, 0x00,
|
||
0x43, 0xC5, 0x91, 0x34, 0x90, 0x0F, 0x87, 0x3C, 0x6D, 0x02, 0x15, 0x38, 0x00, 0x00, 0x01,
|
||
0x32, 0x10, 0x0D, 0xC6, 0x30, 0x90, 0x0D, 0xC1, 0x38, 0x00, 0x00, 0x05, 0x32, 0x10, 0x0D,
|
||
0xDB, 0x30, 0x90, 0x0D, 0xDC, 0x34, 0x00, 0x0F, 0x88, 0x32, 0x10, 0x0D, 0xDD, 0x31, 0x60,
|
||
0x0D, 0xDE, 0x34, 0x00, 0x0D, 0xF2, 0x32, 0x10, 0x0D, 0xDF, 0x38, 0x80, 0x0D, 0xDB, 0xB0,
|
||
0x03, 0xD0, 0x41, 0x36, 0xDE, 0x00, 0x41, 0x3A, 0xFD, 0x01, 0xE8, 0x00, 0x03, 0xEB, 0xC1,
|
||
0x39, 0x80, 0x00, 0x02, 0x30, 0x00, 0x0D, 0xC6, 0x00, 0x43, 0x60, 0x02, 0x3C, 0x6D, 0x02,
|
||
0x12, 0x39, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x60, 0x01, 0x30, 0x20,
|
||
0x0D, 0xCB, 0x30, 0x10, 0x0D, 0xC9, 0x39, 0x10, 0x00, 0x00, 0x39, 0x80, 0x00, 0x04, 0x00,
|
||
0x02, 0xA0, 0x07, 0x30, 0x7D, 0x03, 0xE2, 0x00, 0x00, 0x80, 0x00, 0x38, 0x9D, 0x03, 0xE3,
|
||
0x3E, 0x00, 0x00, 0x04, 0x00, 0x06, 0x51, 0xCF, 0x34, 0x00, 0x0D, 0xFD, 0x22, 0x13, 0xC5,
|
||
0x91, 0x34, 0x90, 0x0D, 0xC1, 0x00, 0x03, 0xC0, 0x99, 0x38, 0x15, 0x00, 0x00, 0x34, 0x20,
|
||
0x0D, 0xCB, 0x42, 0x98, 0x80, 0x08, 0x2E, 0xC0, 0x00, 0x04, 0x30, 0x90, 0x0D, 0xC0, 0x34,
|
||
0x00, 0x0D, 0xC1, 0x3A, 0xDD, 0x02, 0x2E, 0x3A, 0xFD, 0x02, 0x06, 0x00, 0x03, 0xEB, 0xC1,
|
||
0xB0, 0xC0, 0x00, 0x00, 0x3C, 0x4D, 0x02, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x0F,
|
||
0x8D, 0x00, 0x00, 0xC0, 0x3C, 0x3A, 0xDD, 0x02, 0x1C, 0x3A, 0xFD, 0x02, 0x0E, 0x00, 0x03,
|
||
0xEB, 0xC1, 0x39, 0x10, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x2D, 0x31, 0x10, 0x0D, 0xC4, 0x30,
|
||
0xF0, 0x0D, 0xC3, 0x3A, 0xDD, 0x02, 0x16, 0x34, 0x00, 0x0D, 0xC1, 0x32, 0x10, 0x0D, 0xC0,
|
||
0x30, 0x90, 0x0D, 0xC0, 0x38, 0x00, 0x03, 0x80, 0x32, 0x10, 0x0D, 0xCB, 0x39, 0x10, 0x00,
|
||
0x00, 0x00, 0x03, 0xF0, 0x2D, 0x38, 0x00, 0x00, 0x01, 0x32, 0x10, 0x0D, 0xC4, 0x34, 0x3D,
|
||
0x03, 0xCB, 0x2E, 0xFF, 0xFF, 0xFC, 0x14, 0xDB, 0xC5, 0x91, 0x2E, 0xFF, 0xFF, 0xFF, 0x00,
|
||
0x03, 0xC0, 0xD9, 0x34, 0x9D, 0x03, 0xD7, 0x34, 0x40, 0x0D, 0xC1, 0x00, 0x00, 0x80, 0x08,
|
||
0x00, 0x03, 0xC2, 0x43, 0x04, 0xE0, 0x00, 0x00, 0x3C, 0x6D, 0x02, 0x2B, 0x34, 0x5D, 0x03,
|
||
0xD8, 0x00, 0x00, 0xC4, 0xC5, 0x00, 0x00, 0xB4, 0xC5, 0x00, 0x00, 0xB2, 0xC5, 0x00, 0x03,
|
||
0xF0, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x30, 0x5D, 0x03, 0xD8, 0x00, 0x00, 0xCC, 0x4B, 0x00,
|
||
0x03, 0xC3, 0x81, 0x34, 0x20, 0x0F, 0x8D, 0xB0, 0x40, 0xBC, 0x4B, 0x3C, 0x2D, 0x02, 0x36,
|
||
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC5, 0x81, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0,
|
||
0x2D, 0xA0, 0x90, 0x00, 0x00, 0xB0, 0x48, 0x00, 0x00, 0x38, 0x3D, 0x03, 0x2A, 0x30, 0x3D,
|
||
0x03, 0xCE, 0x00, 0x03, 0xCC, 0x03, 0x00, 0x58, 0x00, 0x00, 0x3C, 0x1D, 0x03, 0x37, 0x38,
|
||
0x3D, 0x02, 0x46, 0x30, 0x30, 0x0F, 0xF8, 0x38, 0x3D, 0x02, 0x39, 0x30, 0x30, 0x0F, 0xF8,
|
||
0x00, 0x03, 0xF0, 0x2B, 0x00, 0x03, 0xF0, 0x2D, 0x3B, 0x80, 0x00, 0x01, 0x34, 0x30, 0x0F,
|
||
0xCC, 0x00, 0x03, 0xCC, 0x03, 0x2C, 0xCF, 0xFF, 0xF0, 0x2C, 0xF0, 0x1B, 0xD0, 0x3C, 0x6D,
|
||
0x03, 0x36, 0x38, 0x4D, 0x02, 0x39, 0x30, 0x40, 0x0F, 0xF8, 0x00, 0x03, 0xE3, 0x81, 0x00,
|
||
0x03, 0xEB, 0x01, 0x3B, 0x50, 0x00, 0x00, 0x3B, 0x70, 0x00, 0x00, 0x38, 0xED, 0x03, 0xBE,
|
||
0x2E, 0xF0, 0x00, 0x08, 0x00, 0x03, 0xE0, 0xF4, 0x30, 0xED, 0x03, 0xCF, 0x34, 0x3D, 0x03,
|
||
0xD2, 0x2C, 0xC0, 0xFF, 0xFC, 0x30, 0x3D, 0x03, 0xD2, 0x38, 0x30, 0x00, 0x04, 0x30, 0x3D,
|
||
0x03, 0xD0, 0x38, 0x3D, 0x02, 0x5E, 0x30, 0x3D, 0x03, 0xD1, 0x3A, 0xDD, 0x03, 0x29, 0x38,
|
||
0x3D, 0x03, 0x11, 0x30, 0x30, 0x0F, 0xF8, 0x00, 0x03, 0xE3, 0x81, 0x00, 0x03, 0xEB, 0x01,
|
||
0x3B, 0x50, 0x00, 0x00, 0x3B, 0x70, 0x00, 0x00, 0x34, 0xED, 0x03, 0xCF, 0x00, 0x03, 0xCC,
|
||
0x03, 0x2E, 0xFF, 0xFF, 0xF8, 0x2C, 0xC0, 0x0F, 0xF0, 0x00, 0x03, 0xFD, 0x04, 0x18, 0xE0,
|
||
0x00, 0x00, 0x00, 0x03, 0xE1, 0x32, 0x00, 0x03, 0xCC, 0x04, 0x2F, 0x30, 0x00, 0x08, 0x00,
|
||
0x03, 0xE1, 0x34, 0x30, 0xED, 0x03, 0xCF, 0x2E, 0xFF, 0xFF, 0xFC, 0x2C, 0xF0, 0x00, 0x10,
|
||
0x3C, 0x3D, 0x03, 0x29, 0x38, 0x4D, 0x02, 0x39, 0x30, 0x40, 0x0F, 0xF8, 0x2E, 0xCF, 0xFF,
|
||
0xFF, 0x3C, 0x5D, 0x02, 0x85, 0x00, 0x00, 0xD0, 0x03, 0x30, 0x3D, 0x03, 0xD0, 0x38, 0x4D,
|
||
0x03, 0x11, 0x30, 0x40, 0x0F, 0xF8, 0x3C, 0x1D, 0x03, 0x29, 0x38, 0x4D, 0x02, 0xB1, 0x30,
|
||
0x4D, 0x03, 0xD1, 0x3A, 0xDD, 0x03, 0x29, 0x38, 0x4D, 0x02, 0x7E, 0x30, 0x4D, 0x03, 0xCE,
|
||
0x00, 0x03, 0xEB, 0x01, 0x3B, 0x50, 0x00, 0x00, 0x3B, 0x70, 0x00, 0x00, 0x38, 0x3D, 0x03,
|
||
0x2A, 0x30, 0x3D, 0x03, 0xCE, 0x00, 0x03, 0xCC, 0x04, 0x2F, 0x30, 0x00, 0x08, 0x00, 0x03,
|
||
0xC1, 0x03, 0x2C, 0xCE, 0x80, 0x00, 0x2C, 0xF8, 0x00, 0x00, 0x38, 0xED, 0x03, 0xCA, 0x3C,
|
||
0x6D, 0x03, 0x29, 0x38, 0x3D, 0x02, 0x39, 0x30, 0x30, 0x0F, 0xF8, 0x00, 0x03, 0xE1, 0x34,
|
||
0x30, 0xED, 0x03, 0xCF, 0x38, 0x30, 0x00, 0x02, 0x30, 0x3D, 0x03, 0xD0, 0x38, 0x3D, 0x02,
|
||
0x95, 0x30, 0x3D, 0x03, 0xD1, 0x3A, 0xDD, 0x03, 0x29, 0x38, 0x3D, 0x03, 0x11, 0x30, 0x30,
|
||
0x0F, 0xF8, 0x00, 0x03, 0xEB, 0x01, 0x3B, 0x70, 0x00, 0x00, 0x3B, 0x50, 0x00, 0x00, 0x00,
|
||
0x03, 0xE3, 0x81, 0x34, 0xED, 0x03, 0xCF, 0x00, 0x03, 0xCC, 0x03, 0x2E, 0xFF, 0xFF, 0xF8,
|
||
0x00, 0x03, 0xFD, 0x04, 0x19, 0x18, 0x00, 0x00, 0x00, 0x03, 0xE0, 0xF4, 0x00, 0x03, 0xF0,
|
||
0x0E, 0x34, 0x4D, 0x03, 0xD2, 0x00, 0x00, 0xB0, 0x04, 0x30, 0x4D, 0x03, 0xD2, 0x00, 0x00,
|
||
0xD0, 0x84, 0x3C, 0x1D, 0x02, 0xAC, 0x00, 0x03, 0xCC, 0x03, 0x2E, 0xF0, 0x00, 0x08, 0x2E,
|
||
0xFF, 0xFF, 0xF8, 0x00, 0x03, 0xFD, 0x04, 0x3A, 0xDD, 0x02, 0xAD, 0x19, 0x18, 0x00, 0x00,
|
||
0x00, 0x03, 0xE0, 0xF2, 0x00, 0x03, 0xE0, 0xF4, 0x00, 0x03, 0xF0, 0x2C, 0x3A, 0xDD, 0x02,
|
||
0xC5, 0x30, 0xED, 0x03, 0xCF, 0x00, 0x03, 0xE3, 0x81, 0x00, 0x03, 0xE3, 0x81, 0x00, 0x03,
|
||
0xCC, 0x03, 0x2C, 0xCE, 0x80, 0x00, 0x2C, 0xF8, 0x00, 0x00, 0x3C, 0x6D, 0x03, 0x2A, 0x38,
|
||
0x3D, 0x02, 0x39, 0x30, 0x30, 0x0F, 0xF8, 0x38, 0xED, 0x03, 0xCA, 0x38, 0x3D, 0x02, 0xBE,
|
||
0x00, 0x03, 0xEC, 0x32, 0x3A, 0xDD, 0x03, 0x2A, 0x30, 0xED, 0x03, 0xCF, 0x30, 0x30, 0x0F,
|
||
0xF8, 0x00, 0x03, 0xC3, 0x84, 0x00, 0x03, 0xE3, 0x81, 0x34, 0xED, 0x03, 0xCF, 0x30, 0x4D,
|
||
0x03, 0xCF, 0x00, 0x03, 0xEC, 0x32, 0x00, 0x03, 0xF0, 0x0E, 0x00, 0x03, 0xE3, 0x81, 0x00,
|
||
0x03, 0xEB, 0x01, 0x3B, 0x70, 0x00, 0x00, 0x3B, 0x50, 0x00, 0x00, 0x34, 0x3D, 0x03, 0xC0,
|
||
0x2C, 0xCC, 0x00, 0x00, 0x2C, 0xF8, 0x00, 0x00, 0x00, 0x03, 0xC3, 0x83, 0x3C, 0x1D, 0x02,
|
||
0xD0, 0x34, 0x4D, 0x03, 0xC2, 0x2F, 0x30, 0x00, 0x04, 0x38, 0x30, 0x00, 0x00, 0x30, 0x3D,
|
||
0x03, 0xD7, 0x34, 0x3D, 0x03, 0xC3, 0x2E, 0xFF, 0xFF, 0xF4, 0x19, 0x18, 0x00, 0x00, 0x30,
|
||
0x3D, 0x03, 0xD4, 0x34, 0x3D, 0x03, 0xC2, 0x2E, 0xFF, 0xFF, 0xF0, 0x34, 0x4D, 0x03, 0xC1,
|
||
0x19, 0x18, 0x00, 0x00, 0x30, 0x3D, 0x03, 0xD3, 0x34, 0x3D, 0x03, 0xD2, 0x00, 0x00, 0xB0,
|
||
0x43, 0x30, 0x3D, 0x03, 0xD2, 0x34, 0x4D, 0x03, 0xBE, 0x2F, 0x30, 0x00, 0x04, 0x2D, 0x00,
|
||
0xFF, 0x00, 0x34, 0x3D, 0x03, 0xBF, 0x2E, 0xFF, 0xFF, 0xF4, 0x2C, 0xC0, 0x00, 0xFF, 0x19,
|
||
0x18, 0x00, 0x00, 0x2C, 0xF0, 0x07, 0xEC, 0x3C, 0x3D, 0x03, 0x29, 0x38, 0x4D, 0x02, 0x39,
|
||
0x30, 0x40, 0x0F, 0xF8, 0x34, 0x4D, 0x03, 0xC0, 0x2F, 0x3F, 0xFF, 0xFC, 0x2D, 0x00, 0x00,
|
||
0xFF, 0xB8, 0xD8, 0x00, 0x00, 0x2E, 0xCF, 0xFF, 0xF9, 0x34, 0x4D, 0x03, 0xD2, 0x2D, 0x00,
|
||
0x00, 0x01, 0xB8, 0xD8, 0x00, 0x00, 0x30, 0x3D, 0x03, 0xD0, 0x38, 0x3D, 0x02, 0x39, 0x30,
|
||
0x3D, 0x03, 0xD1, 0x34, 0x3D, 0x03, 0xD2, 0x00, 0x00, 0xD0, 0x83, 0x3C, 0x6D, 0x03, 0x01,
|
||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x03, 0x3C, 0x1D, 0x03, 0x29, 0x38, 0x3D, 0x03,
|
||
0x0A, 0x30, 0x30, 0x0F, 0xF8, 0x34, 0x3D, 0x03, 0xD2, 0x00, 0x00, 0xB0, 0x83, 0x30, 0x3D,
|
||
0x03, 0xD2, 0x3A, 0xDD, 0x03, 0x29, 0x38, 0x3D, 0x03, 0x11, 0x30, 0x30, 0x0F, 0xF8, 0x3C,
|
||
0x1D, 0x03, 0x29, 0x38, 0x3D, 0x03, 0x11, 0x30, 0x30, 0x0F, 0xF8, 0x34, 0x3D, 0x03, 0xD2,
|
||
0x00, 0x00, 0xC0, 0x83, 0x30, 0x3D, 0x03, 0xD2, 0x3A, 0xDD, 0x03, 0x29, 0x38, 0x3D, 0x03,
|
||
0x0A, 0x30, 0x30, 0x0F, 0xF8, 0x00, 0x03, 0xE3, 0x81, 0x00, 0x03, 0xEB, 0x01, 0x3B, 0x70,
|
||
0x00, 0x00, 0x3B, 0x50, 0x00, 0x00, 0x3A, 0xDD, 0x03, 0x1F, 0x34, 0xED, 0x03, 0xCF, 0x00,
|
||
0x03, 0xCC, 0x03, 0x00, 0x03, 0xE3, 0x81, 0x00, 0x03, 0xEB, 0x01, 0x3B, 0x70, 0x00, 0x00,
|
||
0x3B, 0x50, 0x00, 0x00, 0x34, 0xED, 0x03, 0xCF, 0x00, 0x03, 0xCC, 0x03, 0x2E, 0xF0, 0x00,
|
||
0x08, 0x00, 0x01, 0x1C, 0x33, 0x00, 0x03, 0xCC, 0x03, 0x2E, 0xFF, 0xFF, 0xF8, 0x2C, 0xC0,
|
||
0x0F, 0xF0, 0x00, 0x03, 0xFD, 0x04, 0x2D, 0x0F, 0xF0, 0x00, 0x19, 0x18, 0x00, 0x00, 0x34,
|
||
0x4D, 0x03, 0xD0, 0x2F, 0x0F, 0xFF, 0xFE, 0x00, 0x03, 0xE0, 0xF2, 0x3C, 0x3D, 0x03, 0x29,
|
||
0x30, 0x4D, 0x03, 0xD0, 0x30, 0xED, 0x03, 0xCF, 0x00, 0x03, 0xF0, 0x2C, 0x36, 0xDD, 0x03,
|
||
0xCE, 0x34, 0x4D, 0x03, 0xD1, 0x30, 0x40, 0x0F, 0xF8, 0x00, 0x03, 0xF0, 0x2C, 0x34, 0x3D,
|
||
0x03, 0xD2, 0x00, 0x00, 0xD0, 0x43, 0x3C, 0x1D, 0x03, 0x37, 0x34, 0x40, 0x0F, 0xCD, 0x00,
|
||
0x03, 0xF0, 0x0E, 0x34, 0xED, 0x03, 0xCF, 0x34, 0x30, 0x0F, 0x8D, 0x2E, 0xCF, 0xFF, 0xFF,
|
||
0x3C, 0x3D, 0x03, 0x36, 0x30, 0x30, 0x0F, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0,
|
||
0x3C, 0x34, 0x40, 0x0F, 0xCD, 0x00, 0x03, 0xF0, 0x2B, 0x00, 0x03, 0xF0, 0x2D, 0x3B, 0x80,
|
||
0x00, 0x01, 0x34, 0x30, 0x0F, 0xCC, 0x34, 0x3D, 0x03, 0xF8, 0x2E, 0xCF, 0xFF, 0xFF, 0x3C,
|
||
0x3D, 0x03, 0x7F, 0x30, 0x3D, 0x03, 0xF8, 0xB9, 0x20, 0x00, 0x00, 0x3A, 0xDD, 0x03, 0x7F,
|
||
0x38, 0x3D, 0x03, 0x43, 0x30, 0x30, 0x0F, 0xF9, 0x38, 0x4F, 0x87, 0x20, 0x3A, 0xDD, 0x03,
|
||
0x7F, 0x38, 0x3D, 0x03, 0x47, 0x30, 0x30, 0x0F, 0xF9, 0x38, 0x44, 0xE1, 0xF0, 0x3A, 0xDD,
|
||
0x03, 0x7F, 0x38, 0x3D, 0x03, 0x4B, 0x30, 0x30, 0x0F, 0xF9, 0x34, 0x4D, 0x03, 0xD8, 0x00,
|
||
0x00, 0xD3, 0x04, 0x34, 0x4D, 0x03, 0xED, 0x3C, 0x1D, 0x03, 0x7F, 0x38, 0x3D, 0x03, 0x5B,
|
||
0x30, 0x30, 0x0F, 0xF9, 0x38, 0x40, 0x10, 0x30, 0x3A, 0xDD, 0x03, 0x7F, 0x38, 0x3D, 0x03,
|
||
0x55, 0x30, 0x30, 0x0F, 0xF9, 0x38, 0x30, 0x0B, 0xFC, 0x30, 0x3D, 0x03, 0xF8, 0x38, 0x40,
|
||
0x02, 0x00, 0x3A, 0xDD, 0x03, 0x7F, 0x38, 0x3D, 0x03, 0x3B, 0x30, 0x30, 0x0F, 0xF9, 0x00,
|
||
0x03, 0xEB, 0x01, 0x34, 0x30, 0x0F, 0x88, 0x00, 0x5B, 0xD0, 0x35, 0x38, 0x3D, 0x03, 0x66,
|
||
0x3C, 0x1D, 0x03, 0x63, 0x34, 0x4D, 0x03, 0xEE, 0x30, 0x4D, 0x03, 0xF8, 0x38, 0x3D, 0x03,
|
||
0x6D, 0x3A, 0xDD, 0x03, 0x80, 0x30, 0x30, 0x0F, 0xF9, 0x2F, 0x30, 0x00, 0x08, 0xB6, 0xDB,
|
||
0xE3, 0x81, 0x34, 0xED, 0x03, 0xF3, 0x34, 0x3D, 0x03, 0xF8, 0x14, 0xDB, 0xFC, 0x84, 0x3A,
|
||
0xDD, 0x03, 0x79, 0x30, 0xED, 0x03, 0xF3, 0x00, 0x03, 0xF0, 0x0E, 0x00, 0x03, 0xE3, 0x81,
|
||
0x34, 0xED, 0x03, 0xF3, 0x00, 0x03, 0xEB, 0x01, 0xB6, 0xDB, 0xD0, 0x35, 0x00, 0x07, 0x4C,
|
||
0xF4, 0x30, 0xED, 0x03, 0xF3, 0x2E, 0xF0, 0x00, 0x08, 0x2C, 0xCF, 0xF0, 0x00, 0x2F, 0x3F,
|
||
0xFF, 0xF8, 0x18, 0xE3, 0xF0, 0x2C, 0x34, 0x3D, 0x03, 0xF8, 0x14, 0xDB, 0xF0, 0x0E, 0x3C,
|
||
0x3D, 0x03, 0x7F, 0x30, 0x3D, 0x03, 0xF8, 0x34, 0x3D, 0x03, 0xEF, 0x30, 0x3D, 0x03, 0xF8,
|
||
0x38, 0x3D, 0x03, 0x3B, 0x30, 0x30, 0x0F, 0xF9, 0x00, 0x03, 0xEB, 0x01, 0x3B, 0x50, 0x00,
|
||
0x00, 0x34, 0x30, 0x0F, 0xC8, 0x0C, 0xE0, 0x60, 0x38, 0x00, 0x03, 0xC1, 0x31, 0x00, 0x02,
|
||
0xEE, 0x3C, 0x0C, 0xE0, 0x1E, 0x38, 0x00, 0x03, 0xC1, 0x32, 0x00, 0x03, 0xF0, 0x2C, 0x34,
|
||
0x40, 0x0F, 0xCD, 0x00, 0x03, 0xF0, 0x2B, 0x00, 0x03, 0xF0, 0x2D, 0x3B, 0x80, 0x00, 0x01,
|
||
0x34, 0x30, 0x0F, 0xCC, 0x00, 0x03, 0xEB, 0x01, 0x3B, 0x50, 0x00, 0x00, 0x34, 0x40, 0x0F,
|
||
0xC8, 0x00, 0x03, 0xFF, 0x03, 0x00, 0x03, 0xED, 0x7A, 0x0B, 0x1B, 0xF0, 0x2C, 0x00, 0x03,
|
||
0xC0, 0xF1, 0x34, 0x40, 0x0F, 0xCD, 0x00, 0x03, 0xF0, 0x2B, 0x00, 0x03, 0xF0, 0x2D, 0x3B,
|
||
0x80, 0x00, 0x01, 0x34, 0x30, 0x0F, 0xCC, 0x00, 0x03, 0xF0, 0x2D, 0x00, 0x00, 0x00, 0x00,
|
||
0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x03, 0xB8, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||
0x01, 0x2F, 0x2F, 0x00, 0x21, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x2F, 0x21, 0x00, 0x00, 0x03,
|
||
0x04, 0x01, 0x09, 0x0A, 0x07, 0x0E, 0x0F, 0x10, 0x0D, 0x11, 0x00, 0x0D, 0x03, 0xF4, 0x00,
|
||
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x91, 0xA2, 0xB3, 0xC5, 0x01, 0x45, 0x67, 0xC0,
|
||
0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
|
||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||
};
|
||
|
||
static void NEARAPI Ac3SPIStart(void)
|
||
{
|
||
BoardWriteGPIOReg(SPICLK, FALSE);
|
||
Delay(2);
|
||
BoardWriteGPIOReg(SPIENA, FALSE);
|
||
Delay(2);
|
||
}
|
||
|
||
static void NEARAPI Ac3SPIStop(void)
|
||
{
|
||
Delay(2);
|
||
BoardWriteGPIOReg(SPIENA, TRUE);
|
||
}
|
||
|
||
|
||
static BYTE NEARAPI Ac3SPISendByte(BYTE data)
|
||
{
|
||
BYTE Val;
|
||
short i;
|
||
|
||
Val = data;
|
||
for(i=0; i<8; i++)
|
||
{
|
||
BoardWriteGPIOReg(SPICLK, TRUE);
|
||
Delay(2);
|
||
BoardWriteGPIOReg(SPIDO, (Val & 0x80 ? TRUE : FALSE));
|
||
Delay(2);
|
||
BoardWriteGPIOReg(SPICLK, FALSE);
|
||
Delay(2);
|
||
if(BoardReadGPIOReg(SPIDI))
|
||
Val = (Val << 1) | 0x01;
|
||
else
|
||
Val = (Val << 1);
|
||
|
||
}
|
||
return Val;
|
||
}
|
||
|
||
void NEARAPI Ac3SPIReadBack(BYTE command, short numresult, BYTE *result)
|
||
{
|
||
short i;
|
||
|
||
Ac3SPIStart();
|
||
Ac3SPISendByte(0x00);
|
||
Ac3SPISendByte(0x00);
|
||
Ac3SPISendByte(0x00);
|
||
Ac3SPISendByte(command);
|
||
Ac3SPISendByte(0x00);
|
||
Ac3SPISendByte(0x00);
|
||
for (i=0;i<numresult-1;i++)
|
||
result[i] = Ac3SPISendByte(0x00);
|
||
result[i] = Ac3SPISendByte(0x80);
|
||
|
||
Ac3SPISendByte(0x80);
|
||
Ac3SPISendByte(0x80);
|
||
Ac3SPIStop();
|
||
|
||
return;
|
||
}
|
||
|
||
static BYTE NEARAPI Ac3SPISendSeq(short Num, BYTE FAR *Data)
|
||
{
|
||
short i;
|
||
BYTE b;
|
||
|
||
Ac3SPIStart();
|
||
|
||
Ac3SPISendByte(0x00);
|
||
Ac3SPISendByte(0x00);
|
||
Ac3SPISendByte(0x00);
|
||
|
||
Ac3SPISendByte(Data[0]);
|
||
for(i=1; i<Num; i++)
|
||
{
|
||
b = Ac3SPISendByte(Data[i]);
|
||
if ((b != 0x80) && ((Num-i-1) + 3 != b))
|
||
{
|
||
Delay(2);
|
||
BoardWriteGPIOReg(SPIENA, TRUE);
|
||
DebugPrint((DebugLevelError,"ERROR Programming AC3"));
|
||
}
|
||
}
|
||
Ac3SPISendByte(0x00);
|
||
Ac3SPISendByte(0x80);
|
||
b = Ac3SPISendByte(0x80);
|
||
Ac3SPIStop();
|
||
|
||
switch (b & 3)
|
||
{
|
||
case 1:
|
||
DebugPrint((DebugLevelError, "AC3:Invalid OPCODE!!\n"));
|
||
break;
|
||
case 2:
|
||
DebugPrint((DebugLevelError, "AC3:Invalid Parameters!!\n"));
|
||
break;
|
||
case 3:
|
||
DebugPrint((DebugLevelError, "AC3:Device not ready!!\n"));
|
||
break;
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
//
|
||
// FUNCTION : Ac3InitDecoder
|
||
// PARAMS : None
|
||
// RETURNS : TRUE on success FALSE otherwise
|
||
//
|
||
// PURPOSE : Initalise AC3 decoder
|
||
//
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
BOOL FARAPI Ac3InitDecoder(void)
|
||
{
|
||
|
||
BYTE ver[4];
|
||
DWORD version;
|
||
short i;
|
||
BoardWriteAudio(AUD_BBE, 0x01);
|
||
BoardWriteAudio(AUD_DEM, 0x00);
|
||
BoardWriteAudio(AUD_DIF, 0x01);
|
||
BoardWriteAudio(AUD_DIV, 0x02);
|
||
BoardWriteAudio(AUD_EXT, 0x00);
|
||
BoardWriteAudio(AUD_FOR, 0x00);
|
||
BoardWriteAudio(AUD_ISS, 0x03);
|
||
BoardWriteAudio(AUD_LCA, 0x00);
|
||
BoardWriteAudio(AUD_RCA, 0x00);
|
||
BoardWriteAudio(AUD_LRP, 0x00);
|
||
BoardWriteAudio(AUD_ORD, 0x00);
|
||
BoardWriteAudio(AUD_P18, 0x01);
|
||
BoardWriteAudio(AUD_SCP, 0x00);
|
||
BoardWriteAudio(AUD_SEM, 0x00);
|
||
BoardWriteAudio(AUD_SFR, 0x00);
|
||
BoardWriteAudio(AUD_RST, 0x01);
|
||
BoardWriteEPLD(INCTL, 0x00);
|
||
VideoSoftReset();
|
||
BoardWriteEPLD(AUXCTL, 0x08);
|
||
Delay(100);
|
||
i = 0;
|
||
do
|
||
{
|
||
BoardWriteEPLD(AUXCTL, 0x00);
|
||
Delay(100);
|
||
BoardWriteEPLD(AUXCTL, 0x08);
|
||
Delay(100);
|
||
i++;
|
||
if(i>10)
|
||
{
|
||
DbgPrint("`*****ERROR : AC3 Boot Failed!!");
|
||
break;
|
||
}
|
||
} while (!Ac3Boot());
|
||
|
||
BoardWriteEPLD(AUXCTL, 0x08);
|
||
Delay(100);
|
||
Ac3SPIReadBack(0x81, 4, ver);
|
||
version = ((DWORD)(BYTE)(ver[0]) | ((DWORD)(BYTE)(ver[1]) << 8) | ((DWORD)(BYTE)(ver[2]) << 16) | ((DWORD)(BYTE)(ver[3]) << 24));
|
||
DbgPrint("`AC3 Version = %lx\n", version);
|
||
Ac3SPISendSeq(PARAMSIZE, CfgParams);
|
||
Ac3SPISendSeq(PARAMSIZE, AC3Params);
|
||
Ac3Command(AC3_STOP);
|
||
Ac3Command(AC3_UNMUTE);
|
||
|
||
|
||
HwCodecAc3BypassMode(audiodecoutmode & KSAUDDECOUTMODE_SPDIFF);
|
||
|
||
pAc3->starving = FALSE;
|
||
pAc3->errorCount=0;
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
//
|
||
// FUNCTION : Ac3SetBypassMode
|
||
// PARAMS : None
|
||
// RETURNS : TRUE on success FALSE otherwise
|
||
//
|
||
// PURPOSE : Switch on Bypass Mode
|
||
//
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
BOOL Ac3SetBypassMode(void)
|
||
{
|
||
Ac3SPISendSeq(PARAMSIZE, CfgParamsBypass);
|
||
Ac3SPISendSeq(PARAMSIZE, AC3Params);
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
//
|
||
// FUNCTION : Ac3SetNormalMode
|
||
// PARAMS : None
|
||
// RETURNS : TRUE on success FALSE otherwise
|
||
//
|
||
// PURPOSE : Set the normal decoding mode of AC3
|
||
//
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
BOOL Ac3SetNormalMode(void)
|
||
{
|
||
Ac3SPISendSeq(PARAMSIZE, CfgParams);
|
||
Ac3SPISendSeq(PARAMSIZE, AC3Params);
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
//
|
||
// FUNCTION : Ac3Reset
|
||
// PARAMS : None
|
||
// RETURNS : TRUE on success FALSE otherwise
|
||
//
|
||
// PURPOSE : Reset AC3
|
||
//
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
void Ac3Reset(void)
|
||
{
|
||
|
||
pAc3->ac3Data = FALSE;
|
||
pAc3->errorCount = 0;
|
||
VideoSeek();
|
||
Ac3Command(AC3_STOP);
|
||
VideoPlay();
|
||
pAc3->state = ac3PowerUp;
|
||
}
|
||
|
||
|
||
static void NEARAPI Ac3Command(BYTE command)
|
||
{
|
||
Ac3SPISendSeq(1, &command);
|
||
}
|
||
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
//
|
||
// FUNCTION : Ac3SendData
|
||
// PARAMS : None
|
||
// RETURNS : TRUE on success FALSE otherwise
|
||
//
|
||
// PURPOSE : Send data to ac3 chip
|
||
//
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
BOOL FARAPI Ac3SendData(BYTE FARPTR *Data, DWORD Size)
|
||
{
|
||
DWORD i, PoReg, j;
|
||
DWORD TimeOut = 0;
|
||
PoReg = 0x00B00000;
|
||
pAc3->ac3Data = TRUE;
|
||
|
||
for(i=0; i<Size; i++)
|
||
{
|
||
while(memInDword(POSTOFFICEREG)&02000000L)
|
||
{
|
||
TimeOut++;
|
||
if(TimeOut > 0xFFFF)
|
||
{
|
||
TRAP
|
||
break;
|
||
}
|
||
}
|
||
j=0;
|
||
while(BoardReadGPIOReg(1))
|
||
{
|
||
j++;
|
||
if(j > 0xFFFFF)
|
||
{
|
||
pAc3->state = ac3ErrorRecover;
|
||
TRAP
|
||
return FALSE;
|
||
}
|
||
// Timeout Condition
|
||
}
|
||
memOutDword(POSTOFFICEREG,PoReg|Data[i]);
|
||
TimeOut = 0;
|
||
while(memInDword(POSTOFFICEREG)&02000000L)
|
||
{
|
||
TimeOut++;
|
||
if(TimeOut > 0xFFFF)
|
||
{
|
||
TRAP
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
Ac3CheckStatus();
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
//
|
||
// FUNCTION : Ac3Boot
|
||
// PARAMS : None
|
||
// RETURNS : TRUE on success FALSE otherwise
|
||
//
|
||
// PURPOSE : Boot AC3 chip
|
||
//
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
BOOL FARAPI Ac3Boot(void)
|
||
{
|
||
short i,num=0;
|
||
BYTE Val, b;
|
||
BOOL fail = FALSE;
|
||
|
||
Ac3SPIStart();
|
||
b=Ac3SPISendByte(0);
|
||
b=Ac3SPISendByte(0);
|
||
b=Ac3SPISendByte(0);
|
||
b=Ac3SPISendByte(0);
|
||
|
||
num = 0;
|
||
i = 0;
|
||
while(i<ZCODE_SIZE)
|
||
{
|
||
Val = (BYTE)Zcode[i];
|
||
b = Ac3SPISendByte(Val);
|
||
if ((num == 2 ) && (b != 0x05))
|
||
{
|
||
fail = TRUE;
|
||
}
|
||
num++;
|
||
// if(fail)
|
||
// break;
|
||
i++;
|
||
}
|
||
Ac3SPIStop();
|
||
if(fail)
|
||
{
|
||
DPF(("Programming AC3 Failed!!"));
|
||
return FALSE;
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
//
|
||
// FUNCTION : Ac3Open
|
||
// PARAMS : None
|
||
// RETURNS : AC3 Pointer
|
||
//
|
||
// PURPOSE : init ac3 structure
|
||
//
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
PAC3 Ac3Open(void)
|
||
{
|
||
pAc3 = &Ac3;
|
||
pAc3->state = ac3PowerUp;
|
||
return pAc3;
|
||
}
|
||
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
//
|
||
// FUNCTION : Ac3GetPTS
|
||
// PARAMS : None
|
||
// RETURNS : PTS
|
||
//
|
||
// PURPOSE : Read AC3 PTS
|
||
//
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
DWORD Ac3GetPTS(void)
|
||
{
|
||
DWORD pts;
|
||
BYTE buf[16];
|
||
Ac3SPIReadBack(0x8e, 16, buf);
|
||
pts = (DWORD)buf[15] | (DWORD) buf[14] << 8 | (DWORD) buf[13] << 16 | (DWORD) buf[12] << 24;
|
||
pAc3->status = buf[0] >> 5;
|
||
if(pAc3->status == 2)
|
||
{
|
||
pAc3->status = (buf[1] >> 3) & 7;
|
||
if(pAc3->state == ac3Playing)
|
||
{
|
||
pAc3->errorCount++;
|
||
DbgPrint("`Error in Ac3 decoding Errno : %ld\n",pAc3->status);
|
||
// Ac3Command(AC3_STOPF);
|
||
// Ac3Command(AC3_PLAY);
|
||
// Ac3Command(AC3_UNMUTE);
|
||
}
|
||
|
||
}
|
||
return pts;
|
||
}
|
||
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
//
|
||
// FUNCTION : Ac3Play
|
||
// PARAMS : None
|
||
// RETURNS : TRUE on success FALSE otherwise
|
||
//
|
||
// PURPOSE : Play AC3
|
||
//
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
BOOL Ac3Play(void)
|
||
{
|
||
VideoGetABL();
|
||
switch(pAc3->state)
|
||
{
|
||
case ac3Paused:
|
||
BoardWriteAudio(AUD_PLY, 0x01);
|
||
Ac3Command(AC3_UNMUTE);
|
||
Ac3Command(AC3_PLAY);
|
||
pAc3->state = ac3Playing;
|
||
break;
|
||
|
||
case ac3Startup:
|
||
if(pVideo->abl > MINABL)
|
||
{
|
||
BoardWriteAudio(AUD_PLY, 0x01);
|
||
Ac3Command(AC3_UNMUTE);
|
||
Ac3Command(AC3_PLAY);
|
||
pAc3->state = ac3Playing;
|
||
}
|
||
break;
|
||
|
||
case ac3Playing:
|
||
break;
|
||
|
||
default:
|
||
pAc3->state = ac3Startup;
|
||
break;
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
//
|
||
// FUNCTION : Ac3CheckStatus
|
||
// PARAMS : None
|
||
// RETURNS : TRUE on success FALSE otherwise
|
||
//
|
||
// PURPOSE : Check device status
|
||
//
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
void Ac3CheckStatus(void)
|
||
{
|
||
VideoGetABL();
|
||
switch(pAc3->state)
|
||
{
|
||
case ac3Playing:
|
||
if(pVideo->abl < 20)
|
||
{
|
||
pAc3->state = ac3Starving;
|
||
BoardWriteAudio(AUD_PLY, 0x0);
|
||
Ac3Command(AC3_MUTE);
|
||
Ac3Command(AC3_STOP);
|
||
}
|
||
break;
|
||
case ac3Starving:
|
||
if(pVideo->abl > 30)
|
||
{
|
||
pAc3->state = ac3Playing;
|
||
BoardWriteAudio(AUD_PLY, 0x01);
|
||
Ac3Command(AC3_UNMUTE);
|
||
Ac3Command(AC3_PLAY);
|
||
}
|
||
|
||
break;
|
||
|
||
case ac3Startup:
|
||
if(pVideo->abl > MINABL)
|
||
{
|
||
BoardWriteAudio(AUD_PLY, 0x01);
|
||
Ac3Command(AC3_UNMUTE);
|
||
Ac3Command(AC3_PLAY);
|
||
pAc3->state = ac3Playing;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
//
|
||
// FUNCTION : Ac3Pause
|
||
// PARAMS : None
|
||
// RETURNS : TRUE on success FALSE otherwise
|
||
//
|
||
// PURPOSE : Pause
|
||
//
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
BOOL Ac3Pause(void)
|
||
{
|
||
pAc3->state = ac3Paused;
|
||
|
||
Ac3Command(AC3_MUTE);
|
||
Ac3Command(AC3_STOP);
|
||
BoardWriteAudio(AUD_PLY, 0x00);
|
||
return TRUE;
|
||
}
|
||
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
//
|
||
// FUNCTION : Ac3Stop
|
||
// PARAMS : None
|
||
// RETURNS : TRUE on success FALSE otherwise
|
||
//
|
||
// PURPOSE : Pause
|
||
//
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
BOOL Ac3Stop(void)
|
||
{
|
||
pAc3->state = ac3Paused;
|
||
|
||
Ac3Command(AC3_STOPF);
|
||
BoardWriteAudio(AUD_PLY, 0x00);
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
//
|
||
//
|
||
// FUNCTION : Ac3Close
|
||
// PARAMS : None
|
||
// RETURNS : TRUE on success FALSE otherwise
|
||
//
|
||
// PURPOSE : Close
|
||
//
|
||
//
|
||
//
|
||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
BOOL Ac3Close(void)
|
||
{
|
||
return TRUE;
|
||
}
|
||
|