新規マイクライブラリ用ヘッダファイルを追加

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@288 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
kamikawa 2007-09-28 10:49:21 +00:00
parent bfc9350270
commit e48811bca0
4 changed files with 613 additions and 0 deletions

View File

@ -0,0 +1,155 @@
/*---------------------------------------------------------------------------*
Project: TwlSDK - library - camera
File: control.h
Copyright 2007 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#ifndef TWL_MIC_API_H_
#define TWL_MIC_API_H_
#include <twl/types.h>
#ifdef __cplusplus
extern "C" {
#endif
/*===========================================================================*/
/*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/
typedef void (*TWLMICFullCallback) (u8 loop);
/*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/
typedef enum
{
MIC_INTR_DISABLE = (0x0UL << REG_SND_MICCNT_IM_SHIFT),
MIC_INTR_HALF = (0x1UL << REG_SND_MICCNT_IM_SHIFT),
MIC_INTR_OVERFLOW = (0x2UL << REG_SND_MICCNT_IM_SHIFT),
MIC_INTR_HALF_OVERFLOW = (0x3UL << REG_SND_MICCNT_IM_SHIFT)
}
MICIntrCond;
typedef enum
{
MIC_SMP_ALL = (0x0UL << REG_SND_MICCNT_FIFO_SMP_SHIFT),
MIC_SMP_1_2 = (0x1UL << REG_SND_MICCNT_FIFO_SMP_SHIFT),
MIC_SMP_1_3 = (0x2UL << REG_SND_MICCNT_FIFO_SMP_SHIFT),
MIC_SMP_1_4 = (0x3UL << REG_SND_MICCNT_FIFO_SMP_SHIFT)
}
MICSampleRate;
// マイク用タイマー定義
#define reg_MIC_TMCNT_L reg_OS_TM3CNT_L
#define reg_MIC_TMCNT_H reg_OS_TM3CNT_H
#define MIC_TMCNT_H_E_MASK REG_OS_TM3CNT_H_E_MASK
/*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/
// MICライブラリ用ワーク構造体
typedef struct _TWLMICParam
{
u8 dmaNo; // DMA No
MICSampleRate frequency; // サンプリング頻度
u8 loop; // ループ
void* buffer; // データストア先のバッファ
u32 size; // 自動サンプリング格納先バッファサイズ
TWLMICFullCallback callback;
}
TWLMICParam;
/*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*
Name: TWL_MIC_DoSampling
Description: start MIC
Arguments:
Returns: None
*---------------------------------------------------------------------------*/
void TWL_MIC_DoSampling( u16* buffer );
/*---------------------------------------------------------------------------*
Name: TWL_MIC_StartAutoSampling
Description: start MIC
Arguments: id : slave id
Returns: None
*---------------------------------------------------------------------------*/
void TWL_MIC_StartAutoSampling( TWLMICParam param );
/*---------------------------------------------------------------------------*
Name: TWL_MIC_StopAutoSampling
Description: stop MIC
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void TWL_MIC_StopAutoSampling( void );
/*---------------------------------------------------------------------------*
Name: TWL_MIC_GetLastSamplingAddress
Description: stop MIC
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void* TWL_MIC_GetLastSamplingAddress( void );
/*---------------------------------------------------------------------------*
Name: TWL_MIC_SetAmpGain
Description: TWLモードのマイクゲイン(PGAB)
PGABはAutoGainControlが無効になっているときのみ有効です
Arguments: gain : 0119 = 059.5dB
Returns: None
*---------------------------------------------------------------------------*/
void TWL_MIC_SetAmpGain( u8 gain );
/*---------------------------------------------------------------------------*
Name: TWL_MIC_GetAmpGain
Description: TWLモードのマイクゲイン(PGAB)
Arguments: None
Returns: gain
*---------------------------------------------------------------------------*/
u8 TWL_MIC_GetAmpGain( void );
/*===========================================================================*/
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* TWL_MIC_API_H_ */

View File

@ -0,0 +1,98 @@
/*---------------------------------------------------------------------------*
Project: TwlSDK - library - camera
File: control.h
Copyright 2007 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#ifndef TWL_MIC_SERVER_H_
#define TWL_MIC_SERVER_H_
#include <twl/types.h>
#ifdef __cplusplus
extern "C" {
#endif
/*===========================================================================*/
/*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/
#define TWL_MIC_MESSAGE_ARRAY_MAX 4 // スレッド同期用メッセージキューのサイズ
#define TWL_MIC_THREAD_STACK_SIZE 512 // スレッドのスタックサイズ
#define TWL_MIC_MESSAGE_ARGS_MAX 7 // メッセージ引数の最大値
// マイクに関する内部的な状態
typedef enum _TWLMICStatus
{
TWL_MIC_STATUS_READY = 0, // 通常操作待ち状態
TWL_MIC_STATUS_ONE_SAMPLING_START, // 単発サンプリング開始待ち
TWL_MIC_STATUS_AUTO_START, // 自動サンプリング開始待ち
TWL_MIC_STATUS_AUTO_SAMPLING, // 自動サンプリング中
TWL_MIC_STATUS_AUTO_END, // 自動サンプリング終了待ち
TWL_MIC_STATUS_END_WAIT // 自動サンプリング完了待ち(バッファFULL時の自動終了)
}
TWLMICStatus;
/*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/
// TWLマイク用メッセージデータ構造体
typedef struct _TWLMICMessageData
{
TWLMICPxiCommand command;
u32 arg[TWL_MIC_MESSAGE_ARGS_MAX];
}
TWLMICMessageData;
// MICライブラリ用ワーク構造体
typedef struct _TWLMICServerWork
{
OSMessageQueue msgQ; // スレッド同期用メッセージキュー
OSMessage msgArray[TWL_MIC_MESSAGE_ARRAY_MAX]; // メッセージを格納するバッファ
TWLMICMessageData entry[TWL_MIC_MESSAGE_ARRAY_MAX]; // メッセージの実体
u32 entryIndex; // エントリーインデックス
OSThread thread; // TWL-MIC用スレッド
u64 stack[TWL_MIC_THREAD_STACK_SIZE / sizeof(u64)]; // TWL-MIC用スレッドのスタック小さくできる
TWLMICStatus status; // マイク内部状態管理変数
TWLMICPxiCommand command; // ARM9からのコマンド保存用
u8 data[TWL_MIC_PXI_DATA_SIZE_MAX]; // ARM9からのデータ保存用
u8 current; // 受信済みデータ個数 (バイト単位)
u8 total; // 最終データ個数 (1 + 後続コマンド*3)
}
TWLMICServerWork;
/*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*
Name: TWL_MIC_InitServer
Description: ARM7側とやりとりを行うための準備を行います
Arguments: priority
Returns: None.
*---------------------------------------------------------------------------*/
void TWL_MIC_InitServer( u32 priority ); // 初期化、及びスレッドを開始
/*===========================================================================*/
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* TWL_MIC_SERVER_H_ */

View File

@ -0,0 +1,263 @@
/*---------------------------------------------------------------------------*
Project: TwlSDK - library - twl-mic
File: twl_mic_api.h
Copyright 2007 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#ifndef TWL_MIC_MIC_API_H_
#define TWL_MIC_MIC_API_H_
#include <twl/types.h>
#ifdef __cplusplus
extern "C" {
#endif
/*===========================================================================*/
// 処理結果定義
typedef enum _TWLMICResult
{
TWL_MIC_RESULT_SUCCESS = 0,
TWL_MIC_RESULT_ILLEGAL_PARAMETER,
TWL_MIC_RESULT_INVALID_COMMAND,
TWL_MIC_RESULT_ILLEGAL_STATUS,
TWL_MIC_RESULT_BUSY,
TWL_MIC_RESULT_SEND_ERROR,
TWL_MIC_RESULT_FATAL_ERROR,
TWL_MIC_RESULT_MAX
}
TWLMICResult;
typedef enum
{
TWL_MIC_FREQUENCY_ALL = 0x0, // 47.61 / 32.73 kHz
TWL_MIC_FREQUENCY_1_2 = 0x1, // 23.81 / 16.36 kHz
TWL_MIC_FREQUENCY_1_3 = 0x2, // 15.87 / 10.91 kHz
TWL_MIC_FREQUENCY_1_4 = 0x3, // 11.90 / 8.18 kHz
TWL_MIC_FREQUENCY_NUM = 0x4
}
TwlMicFrequency;
// コールバック
typedef void (*TwlMicCallback)(TWLMICResult result, void* arg);
// オートサンプリング用設定定義
typedef struct TwlMicAutoParam
{
u32 dmaNo; // DMA No
void *buffer; // 結果格納バッファへのポインタ(DMAを使うため4byteアライメント
u32 size; // バッファサイズ(DMAを使うため4byte単位
TwlMicFrequency frequency; // サンプリング頻度
BOOL loop_enable; // バッファフル時のループ可否
TwlMicCallback full_callback; // バッファフル時のコールバック
void* full_arg; // 上記コールバックに指定する引数
}
TwlMicAutoParam;
/*---------------------------------------------------------------------------*
Name: MIC_Init
Description: MICライブラリを初期化する
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
void
TWL_MIC_Init(void);
/*---------------------------------------------------------------------------*
Name: MIC_End
Description: MICライブラリを終了する
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
void
TWL_MIC_End(void);
/*---------------------------------------------------------------------------*
Name: TWL_MIC_DoSamplingAsync
Description:
Arguments:
Returns: TWLMICResult
*---------------------------------------------------------------------------*/
TWLMICResult
TWL_MIC_DoSamplingAsync(u16* buf, TwlMicCallback callback, void* callbackArg);
/*---------------------------------------------------------------------------*
Name: TWL_MIC_DoSampling
Description:
Arguments:
Returns: TWLMICResult
*---------------------------------------------------------------------------*/
TWLMICResult
TWL_MIC_DoSampling(u16* buf);
/*---------------------------------------------------------------------------*
Name: TWL_MIC_StartAutoSamplingAsync
Description:
Arguments: param
Returns: TWLMICResult
*---------------------------------------------------------------------------*/
TWLMICResult
TWL_MIC_StartAutoSamplingAsync(TwlMicAutoParam* param, TwlMicCallback callback, void* callbackArg);
/*---------------------------------------------------------------------------*
Name: TWL_MIC_StartAutoSampling
Description:
Arguments: param
Returns: TWLMICResult
*---------------------------------------------------------------------------*/
TWLMICResult
TWL_MIC_StartAutoSampling(TwlMicAutoParam* param);
/*---------------------------------------------------------------------------*
Name: TWL_MIC_StopAutoSampling
Description:
Arguments: param
Returns: TWLMICResult
*---------------------------------------------------------------------------*/
TWLMICResult
TWL_MIC_StopAutoSampling( void );
/*---------------------------------------------------------------------------*
Name: TWL_MIC_StopAutoSamplingAsync
Description:
Arguments: none
Returns: TWLMICResult
*---------------------------------------------------------------------------*/
TWLMICResult
TWL_MIC_StopAutoSamplingAsync( TwlMicCallback callback, void* callbackArg );
/*---------------------------------------------------------------------------*
Name: TWL_MIC_GetLastSamplingAddressAsync
Description:
ARM7からARM9へと通知してい
Arguments: adress :
callback :
callbackArg :
Returns: TWLMICResult
*---------------------------------------------------------------------------*/
TWLMICResult
TWL_MIC_GetLastSamplingAddressAsync( void** adress, TwlMicCallback callback, void* callbackArg );
/*---------------------------------------------------------------------------*
Name: TWL_MIC_GetLastSamplingAddress
Description:
ARM7からARM9へと通知してい
Arguments: adress :
Returns: TWLMICResult
*---------------------------------------------------------------------------*/
TWLMICResult
TWL_MIC_GetLastSamplingAddress( void** adress );
/*---------------------------------------------------------------------------*
Name: TWL_MIC_SetAmpGainAsync
Description:
Arguments: gain : 0119 = 059.5dB
callback :
callbackArg :
Returns: TWLMICResult
*---------------------------------------------------------------------------*/
TWLMICResult
TWL_MIC_SetAmpGainAsync( u8 gain, TwlMicCallback callback, void* callbackArg );
/*---------------------------------------------------------------------------*
Name: TWL_MIC_SetAmpGain
Description:
Arguments: gain : 0119 = 059.5dB
Returns: TWLMICResult
*---------------------------------------------------------------------------*/
TWLMICResult
TWL_MIC_SetAmpGain( u8 gain );
/*---------------------------------------------------------------------------*
Name: TWL_MIC_GetAmpGainAsync
Description: TWLモードのマイクゲイン(PGAB)
Arguments: gain :
callback :
callbackArg :
Returns: TWLMICResult
*---------------------------------------------------------------------------*/
TWLMICResult
TWL_MIC_GetAmpGainAsync( u8* gain, TwlMicCallback callback, void* callbackArg );
/*---------------------------------------------------------------------------*
Name: TWL_MIC_GetAmpGain
Description: TWLモードのマイクゲイン(PGAB)
Arguments: gain :
Returns: TWLMICResult
*---------------------------------------------------------------------------*/
TWLMICResult
TWL_MIC_GetAmpGain( u8* gain );
/*===========================================================================*/
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* TWL_MIC_MIC_API_H_ */

View File

@ -0,0 +1,97 @@
/*---------------------------------------------------------------------------*
Project: TwlSDK - mic - include
File: fifo.h
Copyright 2007 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#ifndef TWL_MIC_FIFO_H_
#define TWL_MIC_FIFO_H_
/*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/
// プロトコル関連定義
#define TWL_MIC_PXI_CONTINUOUS_PACKET_MAX 10 // 連続パケットの最大連続回数
#define TWL_MIC_PXI_DATA_SIZE_MAX ((TWL_MIC_PXI_CONTINUOUS_PACKET_MAX-1)*3+1) // 最大データ数
#define TWL_MIC_PXI_START_BIT 0x02000000 // 先頭パケットを意味する
#define TWL_MIC_PXI_RESULT_BIT 0x00008000 // PXIの応答を示す
/* 先頭パケットのみの規則 */
#define TWL_MIC_PXI_DATA_NUMS_MASK 0x00ff0000 // データ数領域
#define TWL_MIC_PXI_DATA_NUMS_SHIFT 16 // データ数位置
#define TWL_MIC_PXI_COMMAND_MASK 0x00007f00 // コマンド格納部分のマスク
#define TWL_MIC_PXI_COMMAND_SHIFT 8 // コマンド格納部分の位置
#define TWL_MIC_PXI_1ST_DATA_MASK 0x000000ff // 先頭パケットのデータ領域
#define TWL_MIC_PXI_1ST_DATA_SHIFT 0 // 先頭パケットのデータ位置
/* 後続パケットのみの規則 */
#define TWL_MIC_PXI_DATA_MASK 0x00ffffff // データ領域
#define TWL_MIC_PXI_DATA_SHIFT 0 // データ位置
#ifdef __cplusplus
extern "C" {
#endif
/*===========================================================================*/
// PXIコマンド定義
typedef enum _TWLMICPxiCommand
{
TWL_MIC_PXI_COMMAND_ONE_SAMPLING = 0x34, // 単発サンプリング
TWL_MIC_PXI_COMMAND_AUTO_START = 0x35, // 自動サンプリングスタート
TWL_MIC_PXI_COMMAND_AUTO_STOP = 0x36, // 自動サンプリングストップ
TWL_MIC_PXI_COMMAND_GET_LAST_SAMPLING_ADDRESS = 0x37, // 最新サンプリングデータのアドレス取得
TWL_MIC_PXI_COMMAND_SET_AMP_GAIN = 0x38, // PGAB設定
TWL_MIC_PXI_COMMAND_GET_AMP_GAIN = 0x39, // PGAB取得
TWL_MIC_PXI_COMMAND_MIC_BUFFER_FULL = 0x50, // バッファフルの通知
TWL_MIC_PXI_COMMAND_UNKNOWN
}
TWLMICPxiCommand;
// PXIコマンド付加データサイズ定義
typedef enum TWLMICPxiSize
{
TWL_MIC_PXI_SIZE_ONE_SAMPLING = 0, // 0
TWL_MIC_PXI_SIZE_AUTO_START = 11, // dmaNo(u8) buffer(u32) size(u32) frequency(u8) loop_erable(u8)
TWL_MIC_PXI_SIZE_AUTO_STOP = 0, // 0
TWL_MIC_PXI_SIZE_GET_LAST_SAMPLING_ADDRESS = 0, // 0
TWL_MIC_PXI_SIZE_SET_AMP_GAIN = 1, // gain(u8)
TWL_MIC_PXI_SIZE_GET_AMP_GAIN = 0, // 0
TWL_MIC_PXI_SIZE_UNKNOWN
}
TWLMICPxiSize;
// 応答定義
typedef enum TWLMICPxiResult
{
TWL_MIC_PXI_RESULT_SUCCESS = 0, // 処理成功 (void/void*型) // 場合により後続パケットあり
TWL_MIC_PXI_RESULT_INVALID_COMMAND, // 不正なPXIコマンド
TWL_MIC_PXI_RESULT_INVALID_PARAMETER, // 不正なパラメータ
TWL_MIC_PXI_RESULT_ILLEGAL_STATUS, // 状態により処理を実行不能
TWL_MIC_PXI_RESULT_BUSY, // 他のリクエストを実行中
TWL_MIC_PXI_RESULT_FATAL_ERROR, // その他何らかの原因で処理に失敗
TWL_MIC_PXI_RESULT_MAX
}
TWLMICPxiResult;
/*===========================================================================*/
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* TWL_MIC_FIFO_H_ */
/*---------------------------------------------------------------------------*
End of file
*---------------------------------------------------------------------------*/