📄 wmdrm_receiver.h
字号:
/************************************************** * * WMDRM_Receiver.h * * CVS ID: $Id: WMDRM_Receiver.h,v 1.1 2007/09/21 05:35:17 hara Exp $ * Author: Fumio HARA [FH] - STM * Date: $Date: 2007/09/21 05:35:17 $ * Revision: $Revision: 1.1 $ * * Description: * * Main entry point for WMDRM Network Receiver task. * *************************************************** * * COPYRIGHT (C) ST Microelectronics 2007 * All Rights Reserved * **************************************************** * * STM CVS Log: * * $Log: WMDRM_Receiver.h,v $ * Revision 1.1 2007/09/21 05:35:17 hara * Initial implementation for WMDRM feature into A+. * * ***************************************************/#include "gendef.h"#include "xfile.h"#include "filesys.h"#include "drmtypes.h"#include "DrmAes.h"/* * Define a context for Proximity Detection */typedef struct { /* * State for WMDRM Receiver */ DRM_BYTE State; DRM_BYTE USBDeviceConfig; /* * Data from the Registration Response message * * This data is valid in the STATE_GET_PROXIMITY_CHALLENGE and STATE_SEND_PROXIMITY_RESPONSE */ DRM_AES_KEY *ProximityContentEncryptionKey; DRM_DWORD ObjectHandle; DRM_DWORD MediaSessionId; DRM_AES_KEY ContentEncryption_AES_Key[DRM_AES_KEYSIZE_128]; DRM_DWORD MaxDataBlockSize; DRM_BYTE *NextDataBuffer; DRM_DWORD NextDataOffset; DRM_DWORD OperationParameter[5]; DRM_WORD ResponseCode; #if 0 // No used for the moment. DRM_DWORD TimeOffset; #endif } WMDRMNET_PROXIMITY_CONTEXT; /* * Define GetDirItem info on WMDRM */typedef struct { DRM_WORD loopState; DRM_DWORD NumObjectHandle; DRM_DWORD curObjectHandle; DRM_WORD curObjectFormat; DRM_BYTE *pbMessageObjectHandle; DRM_WORD prev_scan_index;} DRM_GETDIRITEM; /* Internal State */#define STATE_SEND_REGISTRATION_REQUEST 0x0 /* RegistrationRequest */#define STATE_GET_REGISTRATION_RESPONSE 0x1 /* RegistrationResponse */#define STATE_GET_PROXIMITY_CHALLENGE 0x2 /* ProximityChallenge */#define STATE_SEND_PROXIMITY_RESPONSE 0x3 /* ProximityResponse */#define STATE_SEND_LICENSE_REQUEST 0x4 /* LicenseRequest */#define STATE_GET_LICENSE_RESPONSE 0x5 /* LicenseResponse */#define STATE_OPEN_MEDIA_SESSION 0x6 /* OpenMediaSession */#define STATE_CLOSE_MEDIA_SESSION 0x7 /* CloseMediaSession */#define STATE_GET_NEXT_DATA_BLOCK 0x8 /* GetNextDataBlock */#define STATE_SET_CURRENT_TIME_POSITION 0x9 /* SetCurrentTimePosition */ #define STATE_GET_PARTIAL_OBJECT_DATA 0xA /* GetPartialObject */ #define STATE_GET_OBJECT_REFERENCES 0xB /* GetObjectReferences *//* All transition goes to STATE_PROXIMITY_DETECTED finally. */#define STATE_PROXIMITY_DETECTED 0xF /* COMPLETE : No more action */#define WMDRM_GET_REGISTRATION STATE_SEND_REGISTRATION_REQUEST #define WMDRM_OPEN_MEDIA_SESSION STATE_OPEN_MEDIA_SESSION #define WMDRM_CLOSE_MEDIA_SESSION STATE_CLOSE_MEDIA_SESSION#define WMDRM_GET_LICENSE STATE_SEND_LICENSE_REQUEST#define WMDRM_GET_NEXT_DATA_BLOCK STATE_GET_NEXT_DATA_BLOCK #define WMDRM_SET_CURRENT_TIME_POSITION STATE_SET_CURRENT_TIME_POSITION #define WMDRM_GET_PARTIAL_OBJECT_DATA STATE_GET_PARTIAL_OBJECT_DATA #define WMDRM_GET_OBJECT_REFERENCES STATE_GET_OBJECT_REFERENCES /* USBDeviceConfig */ #define USBDeviceConfig_WMDRM_ND_SUPPORT 0x80 #define USBDeviceSessionConfig_MediaSessionOpen 0x20 #define USBDeviceSessionConfig_LicenseAvailable 0x10#define USBDeviceSessionConfig_CtrlCapability 0x01#define USBDeviceSessionConfig_DRMStatus 0x02#define USBDeviceSessionConfig_LicenseStatus 0x04#define USBDeviceSessionConfig_DRMDeliveryOptions 0x08#define MASK_USBDeviceSessionConfig 0xC0 #define MASK_USBDeviceSessionConfig_WMDRM_NDR 0x0E#define IS_USBDeviceSuppport_WMDRM_ND (ProximityContext.USBDeviceConfig & USBDeviceConfig_WMDRM_ND_SUPPORT)#define IS_USBDeviceSessionObject_WMDRM_NDR ((ProximityContext.USBDeviceConfig & MASK_USBDeviceSessionConfig_WMDRM_NDR) \ == MASK_USBDeviceSessionConfig_WMDRM_NDR) #define IS_USBDeviceMediaSession_Open (ProximityContext.USBDeviceConfig & USBDeviceSessionConfig_MediaSessionOpen) #define IS_USBDeviceSupport_CtrlCapability (ProximityContext.USBDeviceConfig & USBDeviceSessionConfig_CtrlCapability) #define IS_USBDeviceLicense_Available (ProximityContext.USBDeviceConfig & USBDeviceSessionConfig_LicenseAvailable) /* Object Format */#define OBJECT_FORMAT_CODE_ASSOCIATION 0x3001#define OBJECT_FORMAT_CODE_WMA 0xB901#define OBJECT_FORMAT_CODE_MP3 0x3009#define OBJECT_FORMAT_CODE_AAC 0xB903 #define OBJECT_FORMAT_CODE_PLA 0xBA05 /* Abstract PlayList on MTP specification. */ /* WMDRM_GetDirItem internal State */#define STATE_GET_OBJECTHANLDES_ROOT_DIR 0x00#define STATE_GET_OBJECTHANDLES_CHILD_DIR 0x01#define STATE_GET_OBJECTINFO 0x02 extern WMDRMNET_PROXIMITY_CONTEXT ProximityContext;DRM_RESULTWmdrmNet_TASK_transition( DRM_BYTE handleState);DRM_RESULTWmdrmNet_DATA_transition( DRM_BYTE handleState, t_child_cmd_event *cmd_event, DRM_BOOL execute_cmd);voidWmdrmNetReceiverInit(void);GRESULTWMDRM_GetDirItem(SCAN_STRUCT *scans, DIR_ITEM *item, uint8 *buf);GRESULTWMDRM_Detect(DUID cdid, int partition, FS_DESCRIPTOR *fsd);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -