Go to the documentation of this file.
57 #ifndef __NJB__PROTO3__H
58 #define __NJB__PROTO3__H
63 #define NJB3_SHORTREAD_BUFSIZE 1024
66 #define NJB3_CHUNK_SIZE 0x100000U
67 #define NJB3_FIRMWARE_CHUNK_SIZE 0x40000U
68 #define NJB3_DEFAULT_GET_FILE_BLOCK_SIZE 0x2000U
69 #define NJB3_DEFAULT_SEND_FILE_BLOCK_SIZE 0x2000U
80 #define NJB3_CODECS_FRAME_ID 0x0001U
81 #define NJB3_DISKUTIL_FRAME_ID 0x0002U
82 #define NJB3_PRODID_FRAME_ID 0x0003U
88 #define NJB3_LOCKED_FRAME_ID 0x0006U
89 #define NJB3_FNAME_FRAME_ID 0x0007U
90 #define NJB3_UNKNOWN1_FRAME_ID 0x0008U
91 #define NJB3_KEY_FRAME_ID 0x000aU
92 #define NJB3_CODEC_FRAME_ID 0x000bU
93 #define NJB3_POSTID_FRAME_ID 0x000cU
94 #define NJB3_DIR_FRAME_ID 0x000dU
95 #define NJB3_FILESIZE_FRAME_ID 0x000eU
102 #define NJB3_FILECOUNT_FRAME_ID 0x0013U
103 #define NJB3_VALUE_FRAME_ID 0x0014U
104 #define NJB3_JUKEBOXID_FRAME_ID 0x0015U
105 #define NJB3_FILETIME_FRAME_ID 0x0016U
106 #define NJB3_UNKNOWN6_FRAME_ID 0x0017U
107 #define NJB3_FILEFLAGS_FRAME_ID 0x0018U
112 #define NJB3_ALBUM_FRAME_ID 0x0101U
113 #define NJB3_ARTIST_FRAME_ID 0x0102U
114 #define NJB3_GENRE_FRAME_ID 0x0103U
115 #define NJB3_TITLE_FRAME_ID 0x0104U
116 #define NJB3_LENGTH_FRAME_ID 0x0105U
117 #define NJB3_TRACKNO_FRAME_ID 0x0106U
118 #define NJB3_YEAR_FRAME_ID 0x0107U
128 #define NJB3_SMARTPAR_FRAME_ID 0x010aU
137 #define NJB3_PLAYINFO_FRAME_ID 0x010bU
138 #define NJB3_SEEKTRACK_FRAME_ID 0x010cU
139 #define NJB3_EAX_TYPENAME 0x010eU
140 #define NJB3_PLNAME_FRAME_ID 0x010fU
155 #define NJB3_TIME_FRAME_ID 0x0110U
156 #define NJB3_ALBUMCNT_FRAME_ID 0x0111U
157 #define NJB3_TRACKCNT_FRAME_ID 0x0112U
158 #define NJB3_OWNER_FRAME_ID 0x0113U
168 #define NJB3_BATTERY_FRAME_ID 0x0114U
169 #define NJB3_PLCNT_FRAME_ID 0x0115U
181 #define NJB3_PLAYTRACK_FRAME_ID 0x0119U
187 #define NJB3_UNKNOWN4_FRAME_ID 0x011aU
188 #define NJB3_PLTRACKS_FRAME_ID 0x011cU
197 #define NJB3_MINMAX_ID 0x0201U
198 #define NJB3_EAX_ACTIVE_ID 0x0202U
200 #define NJB3_VOLUME_FRAME_ID 0x0203U
201 #define NJB3_ENV_FRAME_ID 0x0204U
202 #define NJB3_EQ_FRAME_ID 0x0205U
203 #define NJB3_SPAT_FRAME_ID 0x0206U
204 #define NJB3_TSCALE_FRAME_ID 0x0207U
205 #define NJB3_SMARTVOL_FRAME_ID 0x0208U
206 #define NJB3_EAXACTIVE_FRAME_ID 0x020aU
207 #define NJB3_EAXID_FRAME_ID 0x020bU
208 #define NJB3_EAX_INDEX_ID 0x020cU
209 #define NJB3_KEYVALUE_FRAME_ID 0x1400U
213 #define NJB3_FILE_DATABASE 0x0000U
214 #define NJB3__PLAYLIST_DATABASE 0x0001U
215 #define NJB3_TRACK_DATABASE 0x0002U
218 #define NJB3_CODEC_MP3_ID_OLD 0x0000U
219 #define NJB3_CODEC_WAV_ID 0x0001U
220 #define NJB3_CODEC_MP3_ID 0x0002U
221 #define NJB3_CODEC_WMA_ID 0x0003U
228 #define NJB3_CODEC_AA_ID 0x0007U
229 #define NJB3_CODEC_PROTECTED_WMA_ID 0x0203U
232 #define NJB3_START_PLAY 0x00
233 #define NJB3_STOP_PLAY 0x01
234 #define NJB3_PAUSE_PLAY 0x02
235 #define NJB3_RESUME_PLAY 0x03
238 #define NJB3_STATUS_OK 0x0000U
239 #define NJB3_STATUS_EMPTY 0x0001U
240 #define NJB3_STATUS_TRANSFER_ERROR 0x0002U
241 #define NJB3_STATUS_BAD_FILESIZE 0x0003U
242 #define NJB3_STATUS_NOTIMPLEMENTED 0x0004U
243 #define NJB3_STATUS_NOTEXIST 0x0005U
244 #define NJB3_STATUS_PROTECTED 0x000cU
245 #define NJB3_STATUS_EMPTY_CHUNK 0x000eU
262 #define njb3_start_play(njb) njb3_ctrl_playing(njb, NJB3_START_PLAY)
263 #define njb3_stop_play(njb) njb3_ctrl_playing(njb, NJB3_STOP_PLAY)
264 #define njb3_pause_play(njb) njb3_ctrl_playing(njb, NJB3_PAUSE_PLAY)
265 #define njb3_resume_play(njb) njb3_ctrl_playing(njb, NJB3_RESUME_PLAY)
270 int get_extended_tag_info;
277 int current_playing_track;
283 u_int8_t eax_processor_active;
299 u_int16_t last_elapsed;
312 int njb3_set_bitmap(
njb_t *njb, u_int16_t x_size, u_int16_t y_size,
const unsigned char *bitmap);
313 int njb3_current_track (
njb_t *njb, u_int16_t * track);
314 int njb3_elapsed_time (
njb_t *njb, u_int16_t * elapsed,
int * change);
315 int njb3_play_track (
njb_t *njb, u_int32_t trackid);
316 int njb3_queue_track (
njb_t *njb, u_int32_t trackid);
317 int njb3_clear_play_queue(
njb_t *njb);
318 int njb3_ctrl_playing (
njb_t *njb,
int cmd);
319 int njb3_seek_track (
njb_t *njb, u_int32_t position);
321 int njb3_ping (
njb_t *njb,
int type);
323 int njb3_readid (
njb_t *njb, u_int8_t *sdmiid);
324 int njb3_capture (
njb_t *njb);
325 int njb3_release (
njb_t *njb);
326 int njb3_get_disk_usage (
njb_t *njb, u_int64_t *totalbytes, u_int64_t *freebytes);
327 int njb3_turnoff_flashing(
njb_t *njb);
328 int njb3_get_owner_string (
njb_t *njb,
char *name);
329 int njb3_set_owner_string (
njb_t *njb,
const char *name);
332 int njb3_reset_get_track_tag (
njb_t *njb);
338 int njb3_read_keys(
njb_t *njb);
342 u_int32_t njb3_create_file(
njb_t *njb,
unsigned char *ptag, u_int32_t tagsize, u_int16_t database);
343 u_int32_t njb3_send_file_chunk(
njb_t *njb,
unsigned char *chunk, u_int32_t chunksize, u_int32_t fileid);
344 int njb3_send_file_complete(
njb_t *njb, u_int32_t fileid);
345 int njb3_create_folder(
njb_t *njb,
const char *name, u_int32_t *folderid);
346 int njb3_delete_item(
njb_t *njb, u_int32_t itemid);
352 int njb3_adjust_volume(
njb_t *njb, u_int16_t value);
354 int njb3_adjust_eax(
njb_t *njb, u_int16_t eaxid, u_int16_t patchindex, u_int16_t active, u_int16_t scalevalue);
355 void njb3_read_eaxtypes(
njb_t *njb);
njb_datafile_t * datafile_new(void)
Definition: datafile.c:29
u_int8_t turbo_mode
Definition: protocol3.h:298
void destroy_eax_type(njb_eax_t *eax)
Definition: eax.c:319
int njb3_update_16bit_frame(njb_t *njb, u_int32_t itemid, u_int16_t frameid, u_int16_t value)
Definition: protocol3.c:3675
u_int8_t hwRel
Definition: protocol3.h:294
u_int32_t plid
Definition: libnjb.h:255
u_int32_t ntracks
Definition: libnjb.h:254
Definition: protocol3.h:265
int njb3_set_bitmap(njb_t *njb, u_int16_t x_size, u_int16_t y_size, const unsigned char *bitmap)
Definition: protocol3.c:950
njb_time_t * time_unpack3(void *data)
Definition: njbtime.c:62
#define NJB_CODEC_MP3
Definition: libnjb.h:102
#define NJB_PL_UNCHANGED
Definition: libnjb.h:251
int njb3_update_string_frame(njb_t *njb, u_int32_t itemid, u_int16_t frameid, unsigned char *str)
Definition: protocol3.c:3728
u_int16_t number
Definition: libnjb.h:350
char key[5]
Definition: libnjb.h:418
u_int8_t fwMinor
Definition: protocol3.h:286
njb_eax_t * next
Definition: libnjb.h:394
void * protocol_state
Definition: libnjb.h:192
int njb3_get_firmware_confirmation(njb_t *njb)
Definition: protocol3.c:4569
u_int64_t filesize
Definition: libnjb.h:325
void njb3_destroy_state(njb_t *njb)
Definition: protocol3.c:4593
void from_32bit_to_njb3_bytes(u_int32_t val, unsigned char *dp)
Definition: byteorder.c:129
ssize_t usb_pipe_write(njb_t *njb, void *buf, size_t nbytes)
Definition: usb_io.c:67
int njb3_get_file_block(njb_t *njb, unsigned char *data, u_int32_t maxsize)
Definition: protocol3.c:3342
njb_eax_t * new_eax_type(void)
Definition: eax.c:286
u_int8_t fwRel
Definition: protocol3.h:288
int __sub_depth
Definition: base.c:62
#define EO_BADSTATUS
Definition: njb_error.h:17
#define EO_BADDATA
Definition: njb_error.h:15
njb_playlist_t * nextpl
Definition: libnjb.h:259
void NJB_Songid_Addframe(njb_songid_t *song, njb_songid_frame_t *frame)
Definition: songid.c:651
int njb3_announce_firmware(njb_t *njb, u_int32_t size)
Definition: protocol3.c:4519
char * name
Definition: libnjb.h:351
int njb3_reset_get_datafile_tag(njb_t *njb)
Definition: protocol3.c:3019
int njb3_update_tag(njb_t *njb, u_int32_t trackid, unsigned char *ptag, u_int32_t ptagsize)
Definition: protocol3.c:3798
u_int8_t exclusive
Definition: libnjb.h:352
#define OWNER_STRING_LENGTH
Definition: libnjb.h:160
njb_songid_t * next
Definition: libnjb.h:228
int njb3_reset_get_playlist_tag(njb_t *njb)
Definition: protocol3.c:2814
unsigned char deviceid[16]
Definition: libnjb.h:421
njb_songid_frame_t * NJB_Songid_Frame_New_Codec(const char *value)
Definition: songid.c:871
#define EO_USBBLK
Definition: njb_error.h:12
void NJB_Songid_Destroy(njb_songid_t *song)
Definition: songid.c:673
void * time_pack3(njb_time_t *time)
Definition: njbtime.c:135
#define EO_NOMEM
Definition: njb_error.h:14
int njb3_add_multiple_tracks_to_playlist(njb_t *njb, u_int32_t *plid, u_int32_t *trids, u_int16_t ntracks)
Definition: protocol3.c:3944
int njb3_reset_get_playlist_tag(njb_t *njb)
Definition: protocol3.c:2814
u_int32_t dfid
Definition: libnjb.h:323
njb_playlist_track_t * NJB_Playlist_Track_New(u_int32_t trackid)
Definition: playlist.c:433
int njb3_init_state(njb_t *njb)
Definition: protocol3.c:41
int njb3_request_file_chunk(njb_t *njb, u_int32_t fileid, u_int32_t offset)
Definition: protocol3.c:3239
int njb3_get_firmware_confirmation(njb_t *njb)
Definition: protocol3.c:4569
int njb3_update_string_frame(njb_t *njb, u_int32_t itemid, u_int16_t frameid, unsigned char *str)
Definition: protocol3.c:3728
unsigned char * strtoucs2(const unsigned char *str)
Definition: unicode.c:255
#define NJB_CODEC_AA
Definition: libnjb.h:105
int usb_setup(njb_t *njb, int type, int request, int value, int index, int length, void *data)
Definition: usb_io.c:190
int njb3_power_status(njb_t *njb, int *battery_level, int *charging, int *ac_power)
Definition: protocol3.c:403
void NJB_Datafile_Destroy(njb_datafile_t *df)
Definition: datafile.c:52
u_int32_t flags
Definition: libnjb.h:290
njb_songid_t * NJB_Songid_New(void)
Definition: songid.c:42
int ucs2strlen(const unsigned char *unicstr)
Definition: unicode.c:50
u_int8_t group
Definition: libnjb.h:360
int njb3_get_file_block(njb_t *njb, unsigned char *data, u_int32_t maxsize)
Definition: protocol3.c:3342
char * filename
Definition: libnjb.h:276
int njb3_request_file_chunk(njb_t *njb, u_int32_t fileid, u_int32_t offset)
Definition: protocol3.c:3239
void data_dump(FILE *f, void *buf, size_t n)
Definition: ioutil.c:35
void data_dump_ascii(FILE *f, void *buf, size_t n, size_t dump_boundry)
Definition: ioutil.c:60
#define EO_RDSHORT
Definition: njb_error.h:13
char * ucs2tostr(const unsigned char *unicstr)
Definition: unicode.c:183
int njb3_power_status(njb_t *njb, int *battery_level, int *charging, int *ac_power)
Definition: protocol3.c:403
int njb3_init_state(njb_t *njb)
Definition: protocol3.c:41
int njb_device_is_usb20(njb_t *njb)
Definition: base.c:387
u_int32_t trid
Definition: libnjb.h:223
int njb_debug(int flags)
Definition: base.c:361
int njb3_create_playlist(njb_t *njb, char *name, u_int32_t *plid)
Definition: protocol3.c:3865
void NJB_Playlist_Addtrack(njb_playlist_t *pl, njb_playlist_track_t *track, unsigned int pos)
Definition: playlist.c:137
njb_eax_control_t type
Definition: libnjb.h:366
#define NJB_CODEC_WMA
Definition: libnjb.h:103
int njb3_set_bitmap(njb_t *njb, u_int16_t x_size, u_int16_t y_size, const unsigned char *bitmap)
Definition: protocol3.c:950
char * folder
Definition: libnjb.h:281
int njb3_get_codecs(njb_t *njb)
Definition: protocol3.c:223
u_int32_t njb3_send_firmware_chunk(njb_t *njb, u_int32_t chunksize, unsigned char *chunk)
Definition: protocol3.c:4545
u_int32_t njb3_bytes_to_32bit(unsigned char *dp)
Definition: byteorder.c:91
#define NJB_TURBO_ON
Definition: libnjb.h:156
int njb3_create_playlist(njb_t *njb, char *name, u_int32_t *plid)
Definition: protocol3.c:3865
int njb3_update_16bit_frame(njb_t *njb, u_int32_t itemid, u_int16_t frameid, u_int16_t value)
Definition: protocol3.c:3675
#define NJB_CODEC_WAV
Definition: libnjb.h:104
u_int8_t fwMajor
Definition: protocol3.h:284
ssize_t usb_pipe_read(njb_t *njb, void *buf, size_t nbytes)
Definition: usb_io.c:118
int njb3_announce_firmware(njb_t *njb, u_int32_t size)
Definition: protocol3.c:4519
int16_t max_value
Definition: libnjb.h:384
njb_keyval_t * next
Definition: libnjb.h:422
u_int8_t eax_processor_active
Definition: protocol3.h:280
u_int64_t make64(u_int32_t msdw, u_int32_t lsdw)
Definition: byteorder.c:239
u_int8_t hwMajor
Definition: protocol3.h:290
njb_playlist_t * NJB_Playlist_New(void)
Definition: playlist.c:27
void from_16bit_to_njb3_bytes(u_int16_t val, unsigned char *dp)
Definition: byteorder.c:198
int njb3_control_eax_processor(njb_t *njb, u_int16_t state)
Definition: protocol3.c:4028
int njb3_reset_get_datafile_tag(njb_t *njb)
Definition: protocol3.c:3019
void NJB_Playlist_Destroy(njb_playlist_t *pl)
Definition: playlist.c:323
int njb3_update_tag(njb_t *njb, u_int32_t itemid, unsigned char *ptag, u_int32_t ptagsize)
Definition: protocol3.c:3798
u_int32_t value2
Definition: libnjb.h:420
int njb3_add_multiple_tracks_to_playlist(njb_t *njb, u_int32_t *plid, u_int32_t *trids, u_int16_t ntracks)
Definition: protocol3.c:3944
int njb3_get_codecs(njb_t *njb)
Definition: protocol3.c:223
u_int32_t njb3_send_firmware_chunk(njb_t *njb, u_int32_t chunksize, unsigned char *chunk)
Definition: protocol3.c:4545
u_int8_t hwMinor
Definition: protocol3.h:292
int njb3_control_eax_processor(njb_t *njb, u_int16_t state)
Definition: protocol3.c:4028
int16_t min_value
Definition: libnjb.h:379
char * name
Definition: libnjb.h:248
u_int16_t last_elapsed
Definition: protocol3.h:296
u_int16_t njb3_bytes_to_16bit(unsigned char *dp)
Definition: byteorder.c:164
char ** option_names
Definition: libnjb.h:388
u_int32_t value1
Definition: libnjb.h:419
unsigned char * new_folder_pack3(njb_t *njb, const char *name, u_int32_t *size)
Definition: datafile.c:426
njb_datafile_t * nextdf
Definition: libnjb.h:331
void njb3_destroy_state(njb_t *njb)
Definition: protocol3.c:4593
char * product_name
Definition: protocol3.h:282
int _state
Definition: libnjb.h:249
int16_t current_value
Definition: libnjb.h:374