summaryrefslogtreecommitdiff
path: root/docs/API
diff options
context:
space:
mode:
Diffstat (limited to 'docs/API')
-rw-r--r--docs/API276
1 files changed, 276 insertions, 0 deletions
diff --git a/docs/API b/docs/API
new file mode 100644
index 0000000000..dfa6690260
--- /dev/null
+++ b/docs/API
@@ -0,0 +1,276 @@
+$Id$
+ __________ __ ___.
+ Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ \/ \/ \/ \/ \/
+
+ API summmary
+
+[ This is still pretty rough and basic. Extend! ]
+
+LCD
+
+ #include <lcd.h>
+
+ Generic
+
+ Most LCD functions are specific for which output we work with, due to the
+ huge differences.
+
+ lcd_init() - init the LCD stuff
+ lcd_clear_display() - clear the whole display
+ lcd_backlight(on) - set backlight on/off
+ lcd_puts(x,y,string) write a string at given character position
+
+ Recorder
+
+ All the functions operate on a display buffer. You make the buffer get
+ shown on screen by calling lcd_update().
+
+ lcd_update() update the LCD according to the internal buffer.
+
+
+ lcd_update_rect(int x, int y, int height, int width)
+
+ Update the given rectangle to the LCD. Give arguments measured in
+ pixels. Notice that the smallest vertical resolution in updates that the
+ hardware supports is even 8 pixels. This function will adjust to those.
+
+ lcd_setfont(int font) set default font
+ lcd_setmargins(int x, int y) set top/left margins
+ lcd_putsxy(x,y,string,font) put a string at given position, using a
+ specific font
+ lcd_bitmap(src,x,y,width,height,clear) put a bitmap at given position
+ lcd_clearrect(x,y,width,height) clear a rectangle area
+ lcd_fillrect(x,y,width,height) fill a rectangle area
+ lcd_drawrect(x,y,width,height) draw a rectangle
+ lcd_invertrect(x,y,width,height) revert the graphics of the given area
+ lcd_drawline(x1,y1,x2,y2) draw a line between the coordinates
+ lcd_drawpixel(x,y) put a pixel on the given coordinate
+ lcd_clearpixel(x,y) clear the pixel at the given coordinate
+ lcd_fontsize(font,width,height) return the width and height of the font
+
+ Player
+
+ lcd_define_pattern(which,pattern,lenth) define a custom pattern
+
+Buttons
+
+ #include <button.h>
+
+ These functions work the same regardless of which keypad you have, but they
+ return a different set of values. Note that the Recorder keypad has 10
+ keys, while the Player keypad only features 6.
+
+ int button_get(bool block)
+
+ Returns a bitmask for which keys were pressed. If 'block' is set TRUE it
+ won't return until a key is pressed.
+
+Files
+
+ (These functions are POSIX look-alikes)
+
+ #include <file.h>
+
+ int open(const char *path, int oflag);
+
+ The open() function establishes the connection between a file and a file
+ descriptor. It creates an open file descrip- tion that refers to a file
+ and a file descriptor that refers to that open file description. The file
+ descriptor is used by other I/O functions to refer to that file.
+
+ int read(int fildes, void *buf, size_t nbyte);
+
+ The read() function attempts to read nbyte bytes from the file associated
+ with the open file descriptor, fildes, into the buffer pointed to by buf.
+
+ int lseek(int fildes, off_t offset, int whence);
+
+ The lseek() function sets the file pointer associated with the open file
+ descriptor specified by fildes as follows:
+
+ o If whence is SEEK_SET, the pointer is set to offset
+ bytes.
+
+ o If whence is SEEK_CUR, the pointer is set to its
+ current location plus offset.
+
+ o If whence is SEEK_END, the pointer is set to the size
+ of the file plus offset.
+
+ int write(int fildes, const void *buf, size_t nbyte);
+
+ NOT CURRENTLY SUPPORTED.
+
+ write writes up to count bytes to the file referenced by the file
+ descriptor fd from the buffer starting at buf.
+
+ int close(int fildes);
+
+ The close() function will deallocate the file descriptor indicated by
+ fildes. To deallocate means to make the file descriptor available for
+ return by subsequent calls to open(2) or other functions that allocate
+ file descriptors.
+
+ int rename(const char *old, const char *new);
+
+ NOT CURRENTLY SUPPORTED.
+
+ The rename() function changes the name of a file. The old argument points
+ to the pathname of the file to be renamed. The new argument points to the
+ new pathname of the file.
+
+ int remove(const char *pathname);
+
+ NOT CURRENTLY SUPPORTED.
+
+ remove deletes a name from the filesystem. It calls unlink for files,
+ and rmdir for directories.
+
+
+Directories
+
+ #include <dir.h>
+
+ DIR *opendir(const char *name);
+
+ The opendir() function opens a directory stream corresponding to the
+ directory name, and returns a pointer to the directory stream. The
+ stream is positioned at the first entry in the directory.
+
+ struct dirent *readdir(DIR *dir);
+
+ The readdir() function returns a pointer to a dirent structure
+ representing the next directory entry in the directory stream pointed to
+ by dir. It returns NULL on reaching the end-of-file or if an error
+ occurred.
+
+ Add a description of the struct here.
+
+ int closedir(DIR *dir);
+
+ The closedir() function closes the directory stream associated with dir.
+ The directory stream descriptor dir is not available after this call.
+
+
+String/Memory
+
+ #include <string.h>
+
+ strcmp()
+ strcpy()
+ memcpy()
+ memset()
+ ...
+
+Memory allocation
+
+ #include <dmalloc.h>
+
+ void *malloc(size_t size);
+
+ malloc() allocates size bytes and returns a pointer to the allocated
+ memory. The memory is not cleared.
+
+ void free(void *ptr);
+
+ free() frees the memory space pointed to by ptr, which must have been
+ returned by a previous call to malloc(), calloc() or realloc().
+ Otherwise, or if free(ptr) has already been called before, undefined
+ behaviour occurs.
+
+ void *realloc(void *ptr, size_t size);
+
+ realloc() changes the size of the memory block pointed to by ptr to size
+ bytes. The contents will be unchanged to the minimum of the old and new
+ sizes; newly allocated memory will be uninitialized. If ptr is NULL, the
+ call is equivalent to malloc(size); if size is equal to zero, the call is
+ equivalent to free(ptr). Unless ptr is NULL, it must have been returned
+ by an earlier call to malloc(), calloc() or realloc().
+
+ void *calloc(size_t nmemb, size_t size);
+
+ calloc() allocates memory for an array of nmemb elements of size bytes
+ each and returns a pointer to the allocated memory. The memory is set to
+ zero.
+
+ID3
+
+ #include <id3.h>
+ bool mp3info(mp3entry *entry, char *filename);
+
+ Return FALSE if successful. The given mp3entry is then filled in with
+ whatever id3 info it could find about the given file.
+
+Various
+
+ #include <kernel.h>
+
+ void kernel_init(void)
+
+ Inits the kernel and starts the tick interrupt
+
+ void sleep(ticks)
+
+ Sleep a specified number of ticks, we have HZ ticks per second.
+
+ void yield(void)
+
+ Let another thread run. This should be used as soon as you have to "wait"
+ for something or similar, and also if you do anything that takes "a long
+ time". This function is the entire foundation that our "cooperative
+ multitasking" is based on. Use it.
+
+ int set_irq_level(int level)
+
+ Sets the interrupt level (0 = lowest, 15 = highest) and returns the
+ previous level.
+
+ void queue_init(struct event_queue *q)
+
+ Initialize an event queue. The maximum number of events in a queue is
+ QUEUE_LENGTH-1.
+
+ void queue_wait(struct event_queue *q, struct event *ev)
+
+ Receive an event in a queue, blocking the thread if the queue is empty.
+
+ void queue_post(struct event_queue *q, int id, void *data)
+
+ Post an event to a queue.
+ NOTE: Negative event ID's are for system use only!!!
+
+ bool queue_empty(struct event_queue* q)
+
+ Returns true if the queue is empty.
+
+ int queue_broadcast(int id, void *data)
+
+ Posts an event in all queues that has been initiated with queue_init().
+ Returns the number of queues that were posted to.
+
+ int tick_add_task(void (*f)(void))
+
+ Add a task to the tick task queue. The argument is a pointer to a
+ function that will be called every tick interrupt.
+ At most MAX_NUM_TICK_TASKS can be active at the same time.
+
+ int tick_remove_task(void (*f)(void))
+
+ Remove a task from the task queue.
+
+ void mutex_init(struct mutex *m)
+
+ Initialize a mutex.
+
+ void mutex_lock(struct mutex *m)
+
+ Lock a mutex. This will block the thread if the mutex is already locked.
+ Note that you will geta deadlock if you lock the mutex twice!
+
+void mutex_unlock(struct mutex *m)
+
+ Unlock a mutex.