123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922 |
- /////////////////////////////////////////////////////////////////////////////////////
- //
- // File: nmsdk.h
- //
- // Purpose: Combination of the Jukebox SDK2 header file and the NomadII SDK2 header file.
- //
- // Notes: Please make sure to include the COM Stuffs <Objbase.h> and <initguid.h>
- // at the beginning of the application programs. Otherwise, it will get Link Errors.
- //
- // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
- // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
- // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
- // PARTICULAR PURPOSE.
- //
- // Copyright (c) Creative Technology Ltd., 2001. All rights reserved.
- //
- /////////////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////
- // nmsdk.h : main header file for export
- // Version: 1.0.7.0
- /////////////////////////////////////////////////////////////////////////////
- #ifndef __nmsdk_h__
- #define __nmsdk_h__
- //
- // COM Interface Declaration
- //
- #ifdef __cplusplus
- extern "C" {
- #endif // __cplusplus
- //////////////////////////////////////////////////////////////////////////
- // Class ID //
- //////////////////////////////////////////////////////////////////////////
- //CLSID CLSID_CTJukeBox2:
- // {BD1A6357-3E9B-4f1b-8375-AEE989ED6C5E}
- DEFINE_GUID(CLSID_CTJukeBox2,
- 0xbd1a6357, 0x3e9b, 0x4f1b, 0x83, 0x75, 0xae, 0xe9, 0x89, 0xed, 0x6c, 0x5e);
- //CLSID CLSID_CTNOMAD2:
- // {0EBE3156-FD3A-4f5c-ABDB-71E3BEEAD091}
- DEFINE_GUID(CLSID_CTNOMAD2,
- 0xebe3156, 0xfd3a, 0x4f5c, 0xab, 0xdb, 0x71, 0xe3, 0xbe, 0xea, 0xd0, 0x91);
- //////////////////////////////////////////////////////////////////////////
- // return codes //
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////
- // JukeBox & NomadII shared stuffs //
- //////////////////////////////////////////////////////
- // Additional Error codes
- #define DAPSDK_SUCCESS 0x00
- // General Error
- #define DAPSDK_FAILED 0x01
- #define DAPSDK_E_DEVICE_BUSY 0x02
- #define DAPSDK_E_STORAGE_FULL 0x03
- #define DAPSDK_E_SETTIME_REJECTED 0x05
- #define DAPSDK_E_ITEM_SIZE_MISSING 0x14 //NMJB_E_TRACK_SIZE_MISSING
- #define DAPSDK_E_ITEM_UPLOAD_DENIED 0x18 //NMJB_E_TRACK_UPLOAD_DENIED
- #define DAPSDK_E_PLAYER_NOT_CONNECTED 0x80
- #define DAPSDK_E_CANCELLED 0x81
- #define DAPSDK_E_PORT_UNAVAILABLE 0x82
- #define DAPSDK_E_OUT_OF_MEMORY 0x83
- #define DAPSDK_E_FILEOPEN_ERR 0x84
- #define DAPSDK_E_ITEM_NOT_FOUND 0x85
- #define DAPSDK_E_LOAD_COMPONENTS_FAILED 0x86
- #define DAPSDK_E_ID_INVALID 0x87
- #define DAPSDK_E_FILETYPE_ILLEGAL 0x88
- #define DAPSDK_E_LOADRES_FAIL 0x89
- #define DAPSDK_E_FORMAT_NOT_FOUND 0x8a
- #define DAPSDK_E_FILE_ALREADY_EXISTS 0x8b
- #define DAPSDK_E_LIB_CORRUPTED 0x8c
- #define DAPSDK_E_LIB_BUSY 0x8d
- #define DAPSDK_E_FILE_READ_WRITE_FAILED 0x8e //NMJB_E_FILE_WRITE_FAILED
- #define DAPSDK_E_INVALID_FILEPATH 0x8f
- #define DAPSDK_E_UNSUPPORTED 0x91
- #define DAPSDK_E_NORIGHTS 0x95
- #define DAPSDK_E_UNDEFINED_ERR 0xff
- //////////////////////////////////////////////////////
- // NomadII stuffs //
- //////////////////////////////////////////////////////
- #define DAPSDK_E_SMARTMEDIA_WRITE_PROTECTED 0x98
- #define DAPSDK_E_NO_STORAGE 0x99 //No internal media or smart media
- //////////////////////////////////////////////////////
- // JukeBox stuffs //
- //////////////////////////////////////////////////////
- // General Error
- #define DAPSDK_E_HD_GENERAL_ERROR 0x04
- // Track Management Error
- #define DAPSDK_E_TRACK_NOT_FOUND 0x10
- #define DAPSDK_E_TRACK_ALREADY_EXIST 0x11
- #define DAPSDK_E_TRACK_TITLE_MISSING 0x12
- #define DAPSDK_E_TRACK_CODEC_MISSING 0x13
- #define DAPSDK_E_TRACK_IO_OPERATION_ABORTED 0x15
- #define DAPSDK_E_TRACK_READ_WRITE_ERROR 0x16
- #define DAPSDK_E_TRACK_NOT_OPENED 0x17
- // Playlist Error
- #define DAPSDK_E_PL_NOT_FOUND 0x20
- #define DAPSDK_E_PL_ALREADY_EXIST 0x21
- #define DAPSDK_E_PL_ITEM_NOT_FOUND 0x22
- #define DAPSDK_E_PL_ITEM_ALREADY_EXIST 0x23
- //Additional
- #define DAPSDK_E_DISKFULL_FOR_DOWNLOAD 0x90
- #define DAPSDK_E_STATUS_TIMEOUT 0x06
- // Transport Control Error
- #define DAPSDK_E_END_OF_TRACK 0x30
- #define DAPSDK_E_END_OF_LIST 0x31
- #define DAPSDK_E_CODEC_NOT_SUPPORTED 0x32
- #define DAPSDK_E_DATA_CORRUPTED 0x33
- #define DAPSDK_E_SAMPLING_RATE_NOT_SUPPORTED 0x34
- #define DAPSDK_E_DECODING_ERROR 0x35
- #define DAPSDK_E_POSITION_OUTOF_RANGE 0x36
- #define DAPSDK_E_NOT_STOPPED 0x37
- // Audio Control Error
- #define DAPSDK_E_UNKNOW_PROPERTY 0x40
- #define DAPSDK_E_VALUE_OUTOF_RANGE 0x41
- // USB Transaction Error
- #define DAPSDK_E_DATA_FILE_NOT_FOUND 0x60
- #define DAPSDK_E_DATA_FILE_TOO_BIG 0x61
- #define DAPSDK_E_DATA_FILE_ALREADY_EXIST 0x62
- #define DAPSDK_E_TOO_MANY_DATA_FILES 0x63
- //additional
- #define DAPSDK_E_WMDM_INIT_FAILED 0x92
- #define DAPSDK_E_INVALID_ARGUMENT 0x93
- #define DAPSDK_E_PARENTNODE_NOT_EXIST 0x94
- #define DAPSDK_E_NORIGHTS 0x95
- #define DAPSDK_E_PATH_EXCESS_LEN 0x96
- #define DAPSDK_E_LOAD_PROC_FAILED 0x97
- // New Error code for MultiApplication assess of Nomad Jukebox 2/3/Zen
- #define DAPSDK_E_PMSMAN_CREATEDIRECTORY_FAILED 0x0100
- #define DAPSDK_E_DEVICE_WRITE_FAILED 0x0200
- #define DAPSDK_E_DEVICE_READ_FAILED 0x0300
- #define DAPSDK_E_DB_INVALID_REQUEST_ID 0x0400
- #define DAPSDK_E_DB_INVALID_NODE_ID 0x0500
- #define DAPSDK_E_DWNTHRD_CREATEMETADATA_FAILED 0x0600
- #define DAPSDK_E_DEVINFO_INVALID_INDEX 0x0700
- #define DAPSDK_E_INVALID_DEVICESETTINGTYPE 0x0800
- #define DAPSDK_E_FILESIZE_TOO_BIG 0x0900
- #define DAPSDK_E_AUDIOFILE_FORMAT 0x0A00
- #define DAPSDK_E_AUDIOFILE_INVALID 0x0B00
- #define DAPSDK_E_ACCESS_DENIED 0x0C00
- #define DAPSDK_E_FILE_NOT_FOUND 0x0D00
- #define DAPSDK_E_EOF 0x0E00
- #define DAPSDK_E_COOKIE 0x0F00
- #define DAPSDK_E_PLAYBACK_INPROGRESS 0x1000
- #define DAPSDK_E_TRANSFER_INPROGRESS 0x1100
- #define DAPSDK_E_BUFFER_NOT_ENOUGH 0x1200
- // New Error code for Data Folder of Nomad Jukebox 2/3/Zen
- #define DAPSDK_E_NOT_A_FOLDER 0x1400 // the target file is not a folder
- #define DAPSDK_E_FOLDER_NOT_EMPTY 0x1600 // the target folder is not empty
- #define DAPSDK_E_FOLDER_EXIST 0x1700 // the target folder exist
- #define DAPSDK_E_FOLDER_NOTEXIST 0x1800 // the target folder does not exist
- #define DAPSDK_E_PARENTFOLDER_NOTEXIST 0x1900 // the target parent folder does not exist
- #define DAPSDK_E_FILEPATH_TOOLONG 0x1A00 // the target file path is too long
- #define DAPSDK_E_FILENAME_TOOLONG 0x1B00 // the target file name is too long
- #define DAPSDK_E_INVALID_OPERATION 0x1E00 // the operation cannot be perform
- //////////////////////////////////////////////////////////////////////////
- // Definitions for WM Messages //
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////
- // JukeBox & NomadII shared stuffs //
- //////////////////////////////////////////////////////
- // Download message
- #define WM_DAPSDK_DOWNLOAD_PROGRESS WM_USER+500
- #define WM_DAPSDK_DOWNLOAD_COMPLETE WM_USER+501
- // Upload message
- #define WM_DAPSDK_GETITEM_PROGRESS WM_USER+502
- #define WM_DAPSDK_GETITEM_COMPLETE WM_USER+503
- //////////////////////////////////////////////////////
- // JukeBox stuffs //
- //////////////////////////////////////////////////////
- // Device change message
- #define WM_DAPSDK_JUKEBOX_REMOVAL WM_USER+508
- #define WM_DAPSDK_JUKEBOX_ARRIVAL WM_USER+509
- // Playback message
- #define WM_DAPSDK_PLAYBACK_COMPLETE WM_USER+504
- #define WM_DAPSDK_PLAYLIST_COMPLETE WM_USER+505
- #define WM_DAPSDK_PLAYBACK_ERROR WM_USER+506
- #define WM_DAPSDK_PLAYBACK_PROGRESS WM_USER+507
- // New callback messages for MultiApplication assess of Hotcake
- // Notification Messages for database change
- #define WM_DAPSDK_CHANGE_BASE WM_USER + 200
- #define WM_DAPSDK_MUSIC_ADD_FILE WM_DAPSDK_CHANGE_BASE + 0 // wParam = NodeId added, lParam = nil
- #define WM_DAPSDK_MUSIC_DEL_FILE WM_DAPSDK_CHANGE_BASE + 1 // wParam = NodeId deleted, lParam = nil
- #define WM_DAPSDK_MUSIC_SETATTR_FILE WM_DAPSDK_CHANGE_BASE + 2 // wParam = NodeId edited, lParam = nil
- #define WM_DAPSDK_DATA_ADD_FILE WM_DAPSDK_CHANGE_BASE + 3 // wParam = NodeId added, lParam = nil
- #define WM_DAPSDK_DATA_DEL_FILE WM_DAPSDK_CHANGE_BASE + 4 // wParam = NodeId deleted, lParam = nil
- #define WM_DAPSDK_DATA_SETATTR_FILE WM_DAPSDK_CHANGE_BASE + 5 // wParam = NodeId edited, lParam = nil
- #define WM_DAPSDK_PLAYLIST_ADD_FILE WM_DAPSDK_CHANGE_BASE + 6 // wParam = NodeId added, lParam = nil
- #define WM_DAPSDK_PLAYLIST_DEL_FILE WM_DAPSDK_CHANGE_BASE + 7 // wParam = NodeId deleted, lParam = nil
- #define WM_DAPSDK_PLAYLIST_SETATTR_FILE WM_DAPSDK_CHANGE_BASE + 8 // wParam = NodeId edited, lParam = nil
- #define WM_DAPSDK_PLAYLIST_ITEM_CHANGE WM_DAPSDK_CHANGE_BASE + 9 // wParam = PlaylistNodeId affected, lParam = nil
- #define WM_DAPSDK_STORAGEINFO_CHANGE WM_DAPSDK_CHANGE_BASE + 10 // wParam = deviceIndex that change occurred, lParam = nil
- #define WM_DAPSDK_ADDITEM_PROGRESS WM_USER+500
- #define WM_DAPSDK_ADDITEM_COMPLETE WM_USER+501
- /////////////////////////////////////////////////////////////////////////
- // struct defines //
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////
- // JukeBox & NomadII shared stuffs //
- //////////////////////////////////////////////////////
- typedef struct _DAPSDK_DATE_TIME
- {
- short Year, Month, Day, DayOfWeek;
- short Hour, Min, Sec, MilliSec;
- } DATE_TIME, *PDATE_TIME;
- typedef struct _DAPSDK_FORMAT_INFO
- {
- long lCodecID;
- UCHAR szCodecName[128];
- long lSamplingRate;
- long lNumChannel;
- } FORMAT_INFO, *PFORMAT_INFO;
- //-- SDK and firmware version info structure --//
- //
- // used in GetSDKVersion()
- // used in GetDeviceProperties( kFirmwareVersion, kHardwareVersion)
- typedef struct _DAPSDK_VERSION
- {
- WORD major;
- WORD minor;
- WORD build;
- WORD specialBuild;
- } DAPSDK_VERSION, *PDAPSDK_VERSION;
- //-- Memory Storage Information Structure --//
- typedef struct _DAPSDK_STORAGE_INFO
- {
- ULONG totalH;
- ULONG totalL;
- ULONG freeH;
- ULONG freeL;
- } DAPSDK_STORAGE_INFO, *PDAPSDK_STORAGE_INFO;
- //-- Identification structure --//
- // same for RootItem, ParentItem and Item now //
- typedef struct _DAPSDK_ID
- {
- long lID; // stores the unique ID
- long lType; // stores the type (see enum above)
- BSTR bstrName; // stores the name
- } DAPSDK_ID, *PDAPSDK_ID;
- //////////////////////////////////////////////////////
- // NomadII stuffs //
- //////////////////////////////////////////////////////
- typedef struct _DAPSDK_RADIOPRESET
- {
- DWORD dwPresetIndex;
- DWORD dwPresetValue;
- } RADIOPRESET, *PRADIOPRESET;
- // device info struct
- typedef struct _DAPSDK_DEVICE_INFO
- {
- BYTE cDeviceId[16]; // player's ID
- long dwFirmwareVersion; // player's firmware version
- long dwHardwareVersion; // player's hardware version
- char cDeviceName[32]; // player's name w/o NULL terminator
- BYTE byPowerSource; // player's power source status in percent
- } DAPSDK_DEVICE_INFO, *PDAPSDK_DEVICE_INFO;
- enum
- {
- kASCII = 0,
- kBINARY,
- kUNICODE,
- };
- //////////////////////////////////////////////////////
- // Item type for Jukebox (used by lRootItemType, //
- // lParentItemType, lItemType parameter) //
- //////////////////////////////////////////////////////
- enum
- {
- kAudioTrackType = 1, // this is a audio track
- kPlaylistType, // this is a track in the playlist
- kDataFileType, // this is a data file
- kDataFolderType, // this is a data file folder
- };
- /////////////////////////////////////////////////////////
- // Item type for NomadII (used in lItemType parameter) //
- /////////////////////////////////////////////////////////
- enum
- {
- kInternalMemType = 0, // this item resides in internal memory
- kExternalMemType, // this item resides in external (removeable) media
- };
- // Device Property Type Constant
- //-- Device Property type (used by lDevicePropertyType parameter in --//
- // GetDeviceProperties/SetDeviceProperties --//
- enum
- {
- //////////////////////////////////////////////////////
- // JukeBox & NomadII shared stuffs //
- //////////////////////////////////////////////////////
- kDeviceSerialNumberValue = 1, // GET, <NOMAD II>given the Item type
- // in "lpValue" parameter, the return value
- // is a pointer to the serial number
- // of the specified media.
- kFirmwareVersion, // GET, return value is a pointer to
- // DAPSDK_VERSION structure indicating the
- // current firmware version in the device.
- kDeviceNameString, // GET, return value is a pointer to
- // BSTR string.
- kPowerSourceValue,
- kStorageInfoStruct, // GET, return value is a pointer to
- // DAPSDK_STORAGE_INFO structure indicating
- // the current memory usage.
- kDateTimeStruct, // GET/SET, return/set value is a pointer to
- // DATE_TIME structure (defined in SDK 1.0)
- kOwnerNameString, // GET/SET, return/set value is a pointer to BSTR
- // string.
- kAudioFormatCount, // GET, return value is a pointer to the number of
- // audio format supported by device.
- kAudioFormatInfoStruct, // GET, given the index value in "lpValue"
- // parameter, the return value is a pointer to
- // FORMATINFO structure (defined in SDK 1.0).
- kLangEncodeSupport, // GET, returns unsigned long value
- // 0x01 == Latin 1(CP1252), 0x80000000 == UNICODE
- //////////////////////////////////////////////////////
- // JukeBox stuffs //
- //////////////////////////////////////////////////////
- kHardwareVersion, // GET, return value is a pointer to
- // DAPSDK_VERSION structure indicating the
- // current hardware version in the device.
- kAudioVolumeValue, // GET/SET, return/set value is the pointer to the
- // volume level in percentage.
- kAudioMuteValue, // GET/SET, return/set value is the pointer to the
- // Mute status (1=on, 0=off).
- // Treble level in percentage.
- kEAXCount, // GET, return value is the pointer to the number
- // of EAX settings.
- kEAXNameString, // GET, given the index value in "lpValue"
- // parameter, the return value is a pointer to
- // a BSTR string.
- kEAXAmountValue, // GET/SET, given the index value in "lpValue"
- // parameter, the return value is the effect
- // amount in percentage.
- kEAXCurrentIndex, // GET/SET, the value in "lpValue" is used to set
- // or retrieve the current EAX selection.
- kAudioEQPresetCount, // GET, return value is the pointer to the number
- // of EQ settings.
- kAudioEQNameString, // GET, given the index value in "lpValue"
- // parameter, the return value is a pointer to
- // a BSTR string.
- kAudioEQAmountValue, // GET/SET, return/set value is the pointer to the
- // EQ amount in percentage.
- kAudioEQCurrentIndex, // GET/SET, the value in "lpValue" is used to set
- // or retrieve the current EQ selection.
- //////////////////////////////////////////////////////
- // NomadII stuffs //
- //////////////////////////////////////////////////////
- kFMRadioPresetCount, // GET, returns pointer to number of FM radio
- // presets available in the player.
- kFMRadioPresetValue, // GET/SET, given the preset index value,
- // returns an existing value or sets a new
- // preset FM preset. Value in kHz.
- kFormatStorage // SET, Do format storage.
- };
- //Note that all index value is zero-based. Client should call the "kxxxxxxCount" property first before trying to get the value for individual settings in list-type of properties, i.e. kEAXNameString, kAudioFormatInfoStruct...
- //Not all properties are readable and writable, some are read-only attributes. Those properties that are read-only are marked with the "GET" strings and those that are read and writable are marked as "GET/SET". Client should not call SetDeviceProperties() with the read-only property type, such call would fail.
- //New Property types maybe supported in future by simply adding into the enum list, and publish to developers.
- //////////////////////////////////////////////////////
- // JukeBox stuffs //
- //////////////////////////////////////////////////////
- //-- Playback operation type (used by lPlayOperationType parameter in --//
- //-- PlayControl() & QueueControl()) --//
- enum
- {
- kPlayTrack = 1, // lpValue stores the pointer to the
- // DAPSDK_ITEM_ID structure.
- kStopTrack, // lpValue is not used, stop current track, no op
- // if no track is currently playing.
- kPauseTrack, // lpValue is not used, pause current track, no op
- // if no track is currently playing.
- kSetPlaybackPosition, // lpValue stores the pointer to the new playback
- // position.
- kQueueTrack, // lpValue stores the pointer to the
- // DAPSDK_ITEM_ID structure.
- kClearQueue, // lpValue is not used, clear existing queue.
- };
- #define TITLE "TITLE"
- #define FILESIZE "FILE SIZE"
- #define CODEC "CODEC"
- #define ALBUM "ALBUM"
- #define ARTIST "ARTIST"
- #define GENRE "GENRE"
- #define LENGTH "LENGTH"
- #define TRACKNUM "TRACK NUM"
- #define YEAR "YEAR"
- #define PLAYONLY "PLAYONLY"
- #define TRACKID "TRACK ID"
- // new attribute for datafile and datafolder
- #define MOD_FILETIME "MODIFIED FILETIME"
- #define FILE_ATTRIB "FILE ATTRIB"
- #define PARENT_FOLDER "PARENT FOLDER"
- #define FOLDERNAME "FOLDER NAME" // data folder name for Nomad Jukebox
- #define MULTI_ATTRIB "MULTI ATTRIB" // this is for user to change multiple file attribute at one time.
- #define FILENAME "FILE NAME" // file name for Nomad II, data file name for Nomad Jukebox
- #define ALLTRACKSKEY -1
- //////////////////////////////////////////////////////
- // NomadII stuffs //
- //////////////////////////////////////////////////////
- #define DOS_FILEATTRIB "DOS_FILEATTRIB"
- #define DOS_DATETIME "DOS_DATETIME"
- //////////////////////////////////////////////////////////////////////////
- // ICTJukebox (Interface 1) Methods //
- //////////////////////////////////////////////////////////////////////////
- // {DFC9207F-4B64-11D4-A4ED-00A0C98E46CC}
- DEFINE_GUID(IID_ICTJukebox,
- 0xdfc9207f, 0x4b64, 0x11d4, 0xa4, 0xed, 0x00, 0xa0, 0xc9, 0x8e, 0x46, 0xcc);
- interface ICTJukebox : public IUnknown
- {
- virtual HRESULT STDMETHODCALLTYPE CancelTransfer(
- /*[in]*/long lDeviceID) = 0;
- virtual HRESULT STDMETHODCALLTYPE RenamePlaylist(
- /*[in]*/long lDeviceID,
- /*[in]*/long lPlaylistID,
- /*[in]*/BSTR bstrName) = 0;
- virtual HRESULT STDMETHODCALLTYPE RemoveTracksFromPlaylist(
- /*[in]*/long lDeviceID,
- /*[in]*/long lTrackCount,
- /*[in]*/long* lpTrackList,
- /*[in]*/long lPlaylist) = 0;
- virtual HRESULT STDMETHODCALLTYPE AddTracksToPlaylist(
- /*[in]*/long lDeviceID,
- /*[in]*/long lTrackCount,
- /*[in]*/long* lpTrackList,
- /*[in]*/long lPlaylist) = 0;
- virtual HRESULT STDMETHODCALLTYPE InsertPlaylist(
- /*[in]*/long lDeviceID,
- /*[in]*/BSTR bstrPlaylistName,
- /*[out]*/long* lpPlaylistID) = 0;
- virtual HRESULT STDMETHODCALLTYPE DeletePlaylist(
- /*[in]*/long lDeviceID,
- /*[in]*/long lPlaylistID) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindNextTrackInPlaylist(
- /*[in]*/long lDeviceID,
- /*[in]*/long lPlaylistID,
- /*[out]*/long* lpTrackID,
- /*[out]*/BSTR* lpbstrTrackName) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindFirstTrackInPlaylist(
- /*[in]*/long lDeviceID,
- /*[in]*/long lPlaylistID,
- /*[out]*/long* lpTrackID,
- /*[out]*/BSTR* lpbstrTrackName) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindNextPlaylist(
- /*[in]*/long lDeviceID,
- /*[out]*/long* lpPlaylistID,
- /*[out]*/BSTR* lpbstrPlaylistName) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindFirstPlaylist(
- /*[in]*/long lDeviceID,
- /*[out]*/long* lpPlaylistID,
- /*[out]*/BSTR* lpbstrPlaylistName) = 0;
- virtual HRESULT STDMETHODCALLTYPE ChangeTrackInfo(
- /*[in]*/long lDeviceID,
- /*[in]*/long lTarckID,
- /*[in]*/long lSize,
- /*[in]*/IUnknown* lpTrackInfo) = 0;
- virtual HRESULT STDMETHODCALLTYPE DeleteTrack(
- /*[in]*/long lDeviceID,
- /*[in]*/long lTrackID) = 0;
- virtual HRESULT STDMETHODCALLTYPE InsertTrack(
- /*[in]*/long lDeviceID,
- /*[in]*/BSTR bstrFilePath,
- /*[in]*/long lSize,
- /*[in]*/IUnknown* lpTrackInfo,
- /*[out]*/long* lpTrackID) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetTrackInfo(
- /*[in]*/long lDeviceID,
- /*[in]*/long lTrackID,
- /*[in]*/long lInSize,
- /*[out]*/long* lpOutSize,
- /*[out]*/IUnknown* lpTrackInfo) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindNextTrack(
- /*[in]*/long lDeviceID,
- /*[in]*/long lKeyID,
- /*[out]*/long* lpTrackID,
- /*[out]*/BSTR* lpbstrName) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindFirstTrack(
- /*[in]*/long lDeviceID,
- /*[in]*/long lKeyID,
- /*[out]*/long* lpTrackID,
- /*[out]*/BSTR* lpbstrName) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindNextKey(
- /*[in]*/long lDeviceID,
- /*[in]*/long lRootKeyID,
- /*[out]*/long* lpKeyID,
- /*[out]*/BSTR* lpbstrName) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindFirstKey(
- /*[in]*/long lDeviceID,
- /*[in]*/long lRootKeyID,
- /*[out]*/long* lpKeyID,
- /*[out]*/BSTR* lpbstrName) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindNextRootKey(
- /*[in]*/long lDeviceID,
- /*[out]*/long* lpRootKeyID,
- /*[out]*/BSTR* lpbstrName) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindFirstRootKey(
- /*[in]*/long lDeviceID,
- /*[out]*/long* lpRootKeyID,
- /*[out]*/BSTR* lpbstrName) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetOwnerName(
- /*[in]*/long lDeviceID,
- /*[in]*/BSTR bstrName) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetOwnerName(
- /*[in]*/long lDeviceID,
- /*[out]*/BSTR* lpbstrName) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetDateTime(
- /*[in]*/long lDeviceID,
- /*[out]*/IUnknown* lpDateTime) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetDateTime(
- /*[in]*/long lDeviceID,
- /*[out]*/IUnknown* lpDateTime) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindNextFormatSupport(
- /*[in]*/long lDeviceID,
- /*[out]*/IUnknown* lpFormatInfo) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindFirstFormatSupport(
- /*[in]*/long lDeviceID,
- /*[out]*/IUnknown* lpFormatInfo) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetStorageInfo(
- /*[in]*/long lDeviceID,
- /*[out]*/unsigned long* lpTotalMemHigh,
- /*[out]*/unsigned long* lpTotalMemLow,
- /*[out]*/unsigned long* lpFreeMemHigh,
- /*[out]*/unsigned long* lpFreeMemLow ) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetDeviceInfo(
- /*[in]*/long lDeviceID,
- /*[out]*/IUnknown* lpDeviceInfo) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetDeviceCount(
- /*[out]*/long* lpDeviceCount) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetCallbackWindow(
- /*[in]*/long lDeviceID,
- /*[in]*/long hWnd) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetSDKVersion(
- /*[out]*/long* lpVersion) = 0;
- virtual HRESULT STDMETHODCALLTYPE ShutDown() = 0;
- virtual HRESULT STDMETHODCALLTYPE Initialize() = 0;
- };
- //////////////////////////////////////////////////////////////////////////
- // ICTJukebox2 (Interface 2) Methods //
- //////////////////////////////////////////////////////////////////////////
- DEFINE_GUID(IID_ICTJukebox2,
- 0xdfc92080, 0x4b64, 0x11d4, 0xa4, 0xed, 0x00, 0xa0, 0xc9, 0x8e, 0x46, 0xcc);
- interface ICTJukebox2 : public IUnknown
- {
- virtual HRESULT STDMETHODCALLTYPE Initialize2() = 0;
- virtual HRESULT STDMETHODCALLTYPE ShutDown2() = 0;
- virtual HRESULT STDMETHODCALLTYPE SetCallbackWindow2(
- long lDeviceID,
- long hWnd ) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetDeviceCount2(
- long* lpDeviceCount ) = 0;
- //-- Canceling I/O --//
- virtual HRESULT STDMETHODCALLTYPE CancelTransfer2(
- long lDeviceID ) = 0;
- //-- GetSDKVersion2() Fucntion Descriptions --//
- // This function overides the same function in interface 1, this is to
- // return a more meaningful version information to the client which is
- // clearly specified in the DAPSDK_VERSION structure
- virtual HRESULT STDMETHODCALLTYPE GetSDKVersion2(
- IUnknown* lpSDKVersion ) = 0;
- //_______________________ Querying RootItem __________________________//
- virtual HRESULT STDMETHODCALLTYPE FindFirstRootItem (
- long lDeviceID,
- IUnknown* lpRootItemID ) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindNextRootItem (
- long lDeviceID,
- IUnknown* lpRootItemID ) = 0;
- //______________________ Querying ParentItem __________________________//
- virtual HRESULT STDMETHODCALLTYPE FindFirstParentItem (
- long lDeviceID,
- IUnknown* lRootItemID,
- IUnknown* lpParentItemID ) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindNextParentItem (
- long lDeviceID,
- IUnknown* lRootItemID,
- IUnknown* lpParentItemID ) = 0;
- //______________________ ParentItem Management __________________________ //
- //-- AddParentItem() Fucntion Descriptions --//
- // Client can only add Parent Item of the same type as the RootItem. For
- // example, client cannot add a kDataFileType Parent item into a RootItem
- // type of kAudioTrackType.
- //
- // As of current firmware implementation, client can only add ParentItem
- // into a RootItem that has a type of kPlaylistType. Adding ParentItem into
- // other RootItem type will fail.
- virtual HRESULT STDMETHODCALLTYPE AddParentItem (
- long lDeviceID,
- IUnknown* lRootItemID,
- IUnknown* lParentItemID ) = 0;
- //-- DeleteParentItem() Function Description --//
- // Client can only delete ParentItem of type kPlaylistType. Deleting other
- // ParentItem type will fail.
- virtual HRESULT STDMETHODCALLTYPE DeleteParentItem (
- long lDeviceID,
- IUnknown* lParentItemID ) = 0;
- //-- RenameParentItem() Function Description --//
- // Client can only rename ParentItem of type kPlaylistType. Renaming other
- // ParentItem type will fail.
- //
- // The updated DAPSDK_PARENTITEM_ID structure is returned in lParentItemID
- // parameter.
- virtual HRESULT STDMETHODCALLTYPE RenameParentItem (
- long lDeviceID,
- IUnknown* lParentItemID,
- BSTR bstrNewParentItemName ) = 0;
- //__________________________ Querying Item ______________________________//
- virtual HRESULT STDMETHODCALLTYPE FindFirstItem (
- long lDeviceID,
- IUnknown* lParentItemID,
- IUnknown* lpItemID ) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindNextItem (
- long lDeviceID,
- IUnknown* lParentItemID,
- IUnknown* lpItemID ) = 0;
- //_____________________ Getting Item Attributes __________________________//
- //-- GetItemAttribute() Function Description --//
- // This function returns the TrackInfo data for all Item type. But for
- // kDataFileType and kPlaylistFileType, the TrackInfo data contain only
- // file name, file type and file size. In contrast, the item attribute
- // for a kAudioTrackType may contain all information similar to the ID3tag
- // information that a typical MP3 file has.
- virtual HRESULT STDMETHODCALLTYPE GetItemAttribute (
- long lDeviceID,
- IUnknown* lpItemID,
- long lInItemInfoSize,
- long* lOutItemInfoSize,
- IUnknown* lpItemInfo ) = 0;
-
- //-- SetItemAttribute() Function Description --//
- // This function allows client to set TrackInfo attributes of a
- // kAudioTrackItem only. Setting other item type will fail.
- //
- // It allows client to set a particular attribute data according to the name
- // and type given in the parameters. Note that only one attribute can be set
- // at a time.
- virtual HRESULT STDMETHODCALLTYPE SetItemAttribute (
- long lDeviceID,
- IUnknown* lpItemID,
- BSTR bstrAttributeName,
- long lAttributeType,
- long lAttributeDataSize,
- IUnknown* lpAttributeData ) = 0;
- //____________________________ Item Management ___________________________//
- //-- AddItem() Function Description --//
- // This function initiates the file download from the computer to the
- // device. Client should call this function to download audio tracks
- // like MP3, WMA and WAVE and data files. Client are not allow
- // to download an item of kPlaylistType, use AddItemsToParentItem to add
- // item of type kPlaylistType.
- virtual HRESULT STDMETHODCALLTYPE AddItem (
- long lDeviceID,
- long lItemType,
- BSTR bstrSrcFileName,
- long lItemInfoSize,
- IUnknown* lpItemInfo) = 0;
- //-- AddItemsToParentItem() Function Description --//
- // Client call this function to add kAudioTrackType item into the ParentItem
- // of type kPlaylistType. Only kAudioTrackType items are accepted, and only
- // ParentItem of type kPlaylistType can accept such addition.
- virtual HRESULT STDMETHODCALLTYPE AddItemsToParentItem(
- long lDeviceID,
- IUnknown* lpParentItemID,
- long lItemIDCount,
- IUnknown* lpItemIDList ) = 0;
- //-- DeleteItem() Function Description --//
- // Client can call this function to remove item of type kAudioTrackType and
- // kDataFileType. You cannot remove kPlaylistType item here.
- virtual HRESULT STDMETHODCALLTYPE DeleteItem (
- long lDeviceID,
- IUnknown* lpItemID ) = 0;
- //-- GetItem() Function Description --//
- // Client can call this function to retrieve item that are kAudioTrackType
- // and kDataFileType from the device to the computer. Note that client
- // cannot retrieve item of type kPlaylistItem
- virtual HRESULT STDMETHODCALLTYPE GetItem (
- long lDeviceID,
- BSTR bstrDestinationFileName,
- IUnknown* lpItemID ) = 0;
- //________________________ Device Properties ____________________________//
- virtual HRESULT STDMETHODCALLTYPE GetDeviceProperties (
- long lDeviceID,
- long lDevicePropertyType,
- IUnknown* lpValue ) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetDeviceProperties (
- long lDeviceID,
- long lDevicePropertyType,
- IUnknown* lpValue ) = 0;
- //_______________________ Playback control ______________________________//
- virtual HRESULT STDMETHODCALLTYPE PlayControl (
- long lDeviceID,
- long lPlayOperationType,
- IUnknown* lpValue ) = 0;
- virtual HRESULT STDMETHODCALLTYPE QueueControl (
- long lDeviceID,
- long lQueueOperationType,
- IUnknown* lpValue ) = 0;
- };
- //////////////////////////////////////////////////////////////
- // ICTNomad2 Methods //
- //////////////////////////////////////////////////////////////
- // {368953D4-6A2F-4787-BC6F-4047A39A7557}
- DEFINE_GUID(IID_ICTNomad2,
- 0x368953d4, 0x6a2f, 0x4787, 0xbc, 0x6f, 0x40, 0x47, 0xa3, 0x9a, 0x75, 0x57);
-
- interface ICTNomad2 : public IUnknown
- {
- virtual HRESULT STDMETHODCALLTYPE Initialize() = 0;
- virtual HRESULT STDMETHODCALLTYPE ShutDown() = 0;
- virtual HRESULT STDMETHODCALLTYPE SetCallbackWindow(
- /*[in]*/long lDeviceID,
- /*[in]*/long hWnd) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetDeviceCount(
- /*[out]*/long* lpDeviceCount) = 0;
- virtual HRESULT STDMETHODCALLTYPE CancelTransfer(
- /*[in]*/long lDeviceID) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetSDKVersion(
- /*[out]*/IUnknown* lpVersion) = 0;
- //__________________________ Querying Item ______________________________//
- virtual HRESULT STDMETHODCALLTYPE FindFirstItem (
- long lDeviceID,
- IUnknown* lParentItemID,
- IUnknown* lpItemID ) = 0;
- virtual HRESULT STDMETHODCALLTYPE FindNextItem (
- long lDeviceID,
- IUnknown* lParentItemID,
- IUnknown* lpItemID ) = 0;
- //_____________________ Getting Item Attributes __________________________//
- //-- GetItemAttribute() Function Description --//
- // This function returns the TrackInfo data for all Item type. But for
- // kDataFileType and kPlaylistFileType, the TrackInfo data contain only
- // file name, file type and file size. In contrast, the item attribute
- // for a kAudioTrackType may contain all information similar to the ID3tag
- // information that a typical MP3 file has.
- virtual HRESULT STDMETHODCALLTYPE GetItemAttribute (
- long lDeviceID,
- IUnknown* lpItemID,
- long lInItemInfoSize,
- long* lOutItemInfoSize,
- IUnknown* lpItemInfo ) = 0;
- //____________________________ Item Management ___________________________//
- //-- AddItem() Function Description --//
- // This function initiates the file download from the computer to the
- // device. Client should call this function to download audio tracks
- // like MP3, WMA and WAVE and data files. Client are not allow
- // to download an item of kPlaylistType, use AddItemsToParentItem to add
- // item of type kPlaylistType.
- virtual HRESULT STDMETHODCALLTYPE AddItem (
- long lDeviceID,
- long lItemType,
- BSTR bstrSrcFileName,
- long lItemInfoSize,
- IUnknown* lpItemInfo) = 0;
- //-- DeleteItem() Function Description --//
- // Client can call this function to remove item of type kAudioTrackType and
- // kDataFileType. You cannot remove kPlaylistType item here.
- virtual HRESULT STDMETHODCALLTYPE DeleteItem (
- long lDeviceID,
- IUnknown* lpItemID ) = 0;
- //-- GetItem() Function Description --//
- // Client can call this function to retrieve item that are kAudioTrackType
- // and kDataFileType from the device to the computer. Note that client
- // cannot retrieve item of type kPlaylistItem
- virtual HRESULT STDMETHODCALLTYPE GetItem (
- long lDeviceID,
- BSTR bstrDestinationFileName,
- IUnknown* lpItemID ) = 0;
- //________________________ Device Properties ____________________________//
-
- virtual HRESULT STDMETHODCALLTYPE GetDeviceProperties (
- long lDeviceID,
- long lDevicePropertyType,
- IUnknown* lpValue ) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetDeviceProperties (
- long lDeviceID,
- long lDevicePropertyType,
- IUnknown* lpValue ) = 0;
- };
- #ifdef __cplusplus
- }
- #endif // __cplusplus
- #endif
|