|
Data Structures |
struct | njb3_state_t |
Defines |
#define | NJB3_SHORTREAD_BUFSIZE 1024 |
#define | NJB3_CHUNK_SIZE 0x100000U |
#define | NJB3_FIRMWARE_CHUNK_SIZE 0x40000U |
#define | NJB3_DEFAULT_GET_FILE_BLOCK_SIZE 0x2000U |
#define | NJB3_DEFAULT_SEND_FILE_BLOCK_SIZE 0x2000U |
#define | NJB3_CODECS_FRAME_ID 0x0001U |
#define | NJB3_DISKUTIL_FRAME_ID 0x0002U |
#define | NJB3_PRODID_FRAME_ID 0x0003U |
#define | NJB3_LOCKED_FRAME_ID 0x0006U |
#define | NJB3_FNAME_FRAME_ID 0x0007U |
#define | NJB3_UNKNOWN1_FRAME_ID 0x0008U |
#define | NJB3_KEY_FRAME_ID 0x000aU |
#define | NJB3_CODEC_FRAME_ID 0x000bU |
#define | NJB3_POSTID_FRAME_ID 0x000cU |
#define | NJB3_DIR_FRAME_ID 0x000dU |
#define | NJB3_FILESIZE_FRAME_ID 0x000eU |
#define | NJB3_FILECOUNT_FRAME_ID 0x0013U |
#define | NJB3_VALUE_FRAME_ID 0x0014U |
#define | NJB3_JUKEBOXID_FRAME_ID 0x0015U |
#define | NJB3_FILETIME_FRAME_ID 0x0016U |
#define | NJB3_UNKNOWN6_FRAME_ID 0x0017U |
#define | NJB3_FILEFLAGS_FRAME_ID 0x0018U |
#define | NJB3_ALBUM_FRAME_ID 0x0101U |
#define | NJB3_ARTIST_FRAME_ID 0x0102U |
#define | NJB3_GENRE_FRAME_ID 0x0103U |
#define | NJB3_TITLE_FRAME_ID 0x0104U |
#define | NJB3_LENGTH_FRAME_ID 0x0105U |
#define | NJB3_TRACKNO_FRAME_ID 0x0106U |
#define | NJB3_YEAR_FRAME_ID 0x0107U |
#define | NJB3_SMARTPAR_FRAME_ID 0x010aU |
#define | NJB3_PLAYINFO_FRAME_ID 0x010bU |
#define | NJB3_SEEKTRACK_FRAME_ID 0x010cU |
#define | NJB3_EAX_TYPENAME 0x010eU |
#define | NJB3_PLNAME_FRAME_ID 0x010fU |
#define | NJB3_TIME_FRAME_ID 0x0110U |
#define | NJB3_ALBUMCNT_FRAME_ID 0x0111U |
#define | NJB3_TRACKCNT_FRAME_ID 0x0112U |
#define | NJB3_OWNER_FRAME_ID 0x0113U |
#define | NJB3_BATTERY_FRAME_ID 0x0114U |
#define | NJB3_PLCNT_FRAME_ID 0x0115U |
#define | NJB3_PLAYTRACK_FRAME_ID 0x0119U |
#define | NJB3_UNKNOWN4_FRAME_ID 0x011aU |
#define | NJB3_PLTRACKS_FRAME_ID 0x011cU |
#define | NJB3_MINMAX_ID 0x0201U |
#define | NJB3_EAX_ACTIVE_ID 0x0202U |
#define | NJB3_VOLUME_FRAME_ID 0x0203U |
#define | NJB3_ENV_FRAME_ID 0x0204U |
#define | NJB3_EQ_FRAME_ID 0x0205U |
#define | NJB3_SPAT_FRAME_ID 0x0206U |
#define | NJB3_TSCALE_FRAME_ID 0x0207U |
#define | NJB3_SMARTVOL_FRAME_ID 0x0208U |
#define | NJB3_EAXACTIVE_FRAME_ID 0x020aU |
#define | NJB3_EAXID_FRAME_ID 0x020bU |
#define | NJB3_EAX_INDEX_ID 0x020cU |
#define | NJB3_KEYVALUE_FRAME_ID 0x1400U |
#define | NJB3_FILE_DATABASE 0x0000U |
#define | NJB3__PLAYLIST_DATABASE 0x0001U |
#define | NJB3_TRACK_DATABASE 0x0002U |
#define | NJB3_CODEC_MP3_ID_OLD 0x0000U |
#define | NJB3_CODEC_WAV_ID 0x0001U |
#define | NJB3_CODEC_MP3_ID 0x0002U |
#define | NJB3_CODEC_WMA_ID 0x0003U |
#define | NJB3_CODEC_AA_ID 0x0007U |
#define | NJB3_CODEC_PROTECTED_WMA_ID 0x0203U |
#define | NJB3_START_PLAY 0x00 |
#define | NJB3_STOP_PLAY 0x01 |
#define | NJB3_PAUSE_PLAY 0x02 |
#define | NJB3_RESUME_PLAY 0x03 |
#define | NJB3_STATUS_OK 0x0000U |
#define | NJB3_STATUS_EMPTY 0x0001U |
#define | NJB3_STATUS_TRANSFER_ERROR 0x0002U |
#define | NJB3_STATUS_BAD_FILESIZE 0x0003U |
#define | NJB3_STATUS_NOTIMPLEMENTED 0x0004U |
#define | NJB3_STATUS_NOTEXIST 0x0005U |
#define | NJB3_STATUS_PROTECTED 0x000cU |
#define | NJB3_STATUS_EMPTY_CHUNK 0x000eU |
#define | njb3_start_play(njb) njb3_ctrl_playing(njb, NJB3_START_PLAY) |
#define | njb3_stop_play(njb) njb3_ctrl_playing(njb, NJB3_STOP_PLAY) |
#define | njb3_pause_play(njb) njb3_ctrl_playing(njb, NJB3_PAUSE_PLAY) |
#define | njb3_resume_play(njb) njb3_ctrl_playing(njb, NJB3_RESUME_PLAY) |
Functions |
int | njb3_init_state (njb_t *njb) |
int | njb3_set_bitmap (njb_t *njb, u_int16_t x_size, u_int16_t y_size, const unsigned char *bitmap) |
int | njb3_current_track (njb_t *njb, u_int16_t *track) |
int | njb3_elapsed_time (njb_t *njb, u_int16_t *elapsed, int *change) |
int | njb3_play_track (njb_t *njb, u_int32_t trackid) |
int | njb3_queue_track (njb_t *njb, u_int32_t trackid) |
int | njb3_clear_play_queue (njb_t *njb) |
int | njb3_ctrl_playing (njb_t *njb, int cmd) |
int | njb3_seek_track (njb_t *njb, u_int32_t position) |
int | njb3_get_codecs (njb_t *njb) |
int | njb3_ping (njb_t *njb, int type) |
int | njb3_power_status (njb_t *njb, int *battery_level, int *charging, int *ac_power) |
int | njb3_readid (njb_t *njb, u_int8_t *sdmiid) |
int | njb3_capture (njb_t *njb) |
int | njb3_release (njb_t *njb) |
int | njb3_get_disk_usage (njb_t *njb, u_int64_t *totalbytes, u_int64_t *freebytes) |
int | njb3_turnoff_flashing (njb_t *njb) |
int | njb3_get_owner_string (njb_t *njb, char *name) |
int | njb3_set_owner_string (njb_t *njb, const char *name) |
njb_time_t * | njb3_get_time (njb_t *njb) |
int | njb3_set_time (njb_t *njb, njb_time_t *time) |
int | njb3_reset_get_track_tag (njb_t *njb) |
njb_songid_t * | njb3_get_next_track_tag (njb_t *njb) |
int | njb3_reset_get_playlist_tag (njb_t *njb) |
njb_playlist_t * | njb3_get_next_playlist_tag (njb_t *njb) |
int | njb3_reset_get_datafile_tag (njb_t *njb) |
njb_datafile_t * | njb3_get_next_datafile_tag (njb_t *njb) |
int | njb3_read_keys (njb_t *njb) |
njb_keyval_t * | njb3_get_keys (njb_t *njb) |
int | njb3_request_file_chunk (njb_t *njb, u_int32_t fileid, u_int32_t offset) |
int | njb3_get_file_block (njb_t *njb, unsigned char *data, u_int32_t maxsize) |
u_int32_t | njb3_create_file (njb_t *njb, unsigned char *ptag, u_int32_t tagsize, u_int16_t database) |
u_int32_t | njb3_send_file_chunk (njb_t *njb, unsigned char *chunk, u_int32_t chunksize, u_int32_t fileid) |
int | njb3_send_file_complete (njb_t *njb, u_int32_t fileid) |
int | njb3_create_folder (njb_t *njb, const char *name, u_int32_t *folderid) |
int | njb3_delete_item (njb_t *njb, u_int32_t itemid) |
int | njb3_update_16bit_frame (njb_t *njb, u_int32_t itemid, u_int16_t frameid, u_int16_t value) |
int | njb3_update_string_frame (njb_t *njb, u_int32_t itemid, u_int16_t frameid, unsigned char *str) |
int | njb3_update_tag (njb_t *njb, u_int32_t trackid, unsigned char *ptag, u_int32_t ptagsize) |
int | njb3_create_playlist (njb_t *njb, char *name, u_int32_t *plid) |
int | njb3_add_multiple_tracks_to_playlist (njb_t *njb, u_int32_t *plid, u_int32_t *trids, u_int16_t ntracks) |
int | njb3_adjust_volume (njb_t *njb, u_int16_t value) |
int | njb3_control_eax_processor (njb_t *njb, u_int16_t state) |
int | njb3_adjust_eax (njb_t *njb, u_int16_t eaxid, u_int16_t patchindex, u_int16_t active, u_int16_t scalevalue) |
void | njb3_read_eaxtypes (njb_t *njb) |
njb_eax_t * | njb3_get_nexteax (njb_t *njb) |
int | njb3_announce_firmware (njb_t *njb, u_int32_t size) |
u_int32_t | njb3_send_firmware_chunk (njb_t *njb, u_int32_t chunksize, unsigned char *chunk) |
int | njb3_get_firmware_confirmation (njb_t *njb) |
void | njb3_destroy_state (njb_t *njb) |
The protocol has three distinct namespaced ("enum series") that are used for communications. These are:
1. Command namespace, all commands that can be sent are uniquely enumerated. 2. Device register and frame namespace: all kind of metadata, database data and device registers (!) are enumerated in the same namespace, making very different things share the same number series. 3. Return types (error codes). 4. Codecs. 5. File types (or databases), it's just track, file or playlist really.
0x0001 Update database item metadata on files, tracks, playlists also used for adding smartvolume information to tracks 0x0002 Get file/track chunk 0x0003 Send file/track chunk 0x0004 Create database file item (files and tracks) 0x0005 Delete database file item (files and tracks) 0x0006 Read database tracks, datafiles, playlists, all the commands seen for this code has produced a dump of the entire database so these are all-or-nothing operations. 0x0007 Set device register - owner string, current track position, play status (pause/stop), set time, EAX processor mode (on/off) 0x0008 Request device register - codecs, device info, ID, fw version, hw version, disk usage, owner string, time, current track position, play status (pause/stop), number of tracks, albums or playlists, battery status. 0x0009 Send file/track complete 0x000a Create folder or playlist (empty, non-file item entry in database) 0x000b Load device firmware (bitmaps and firmware upgrade) 0x000c Get device keys, returns a number of device-unique keys. 0x0010 Verify file?? 0x0100 Playback track (on the device) 0x0101 Get elapsed time for current track, just 4 bytes 0101 0001 0x0103 Clear playback queue 0x0104 Enqueue track for playing 0x0107 Add tracks to playlist 0x0108 Get tracks for playlist 0x0200 Get EAX effect settings 0x0201 Adjust EAX setting