Contiki-Inga 3.x
Files | Functions | Variables
FAT Driver - Cooperative Additions

Files

file  fat_coop.c
 
 FAT driver coop additions implementation

 
file  fat_coop.h
 
    FAT driver Coop Additions definitions

 
file  fat-coop-arch.c
 
    FAT driver Coop Additions implementation - Platform specific

 
file  fat-coop-arch.h
 
    FAT driver Coop Additions definitions - Platform specific

 

Functions

void coop_mt_init (void *data)
 This function is mostly copied from the arm/mtarch.c file.
 
void coop_switch_sp ()
 Function switches the stack pointers for Atmel based devices (32 GPR's).
 
void perform_next_step (QueueEntry *entry)
 Changes Stack pointer to internal Thread. More...
 
void finish_operation (QueueEntry *entry)
 Sends a Message to the source_process of the Entry and removes the Entry from the queue. More...
 
void operation (void *data)
 
uint8_t push_on_buffer (uint8_t *source, uint16_t length)
 This function is used to buffer the payload of write requests in a ring buffer However, the ring functionality does not work.
 
int8_t ccfs_write (int fd, uint8_t *buf, uint16_t length, uint8_t *token)
 
void coop_finished_op ()
 This Function jumps back to perform_next_step()
 
void coop_mt_stop ()
 Set the interal stack to NULL to end process.
 

Variables

struct file_system mounted
 From fat.c.
 
struct file fat_file_pool [FAT_FD_POOL_SIZE]
 From fat.c.
 
struct file_desc fat_fd_pool [FAT_FD_POOL_SIZE]
 From fat.c.
 

Detailed Description

Function Documentation

int8_t ccfs_write ( int  fd,
uint8_t *  buf,
uint16_t  length,
uint8_t *  token 
)

FIXME: We push information in a ring buffer, which actually does not work as a ring, because the eventual cfs_write call does not know anything about rings

Definition at line 568 of file fat_coop.c.

References NULL, PROCESS_CURRENT, PROCESS_ERR_FULL, process_post(), process_start(), and push_on_buffer().

void finish_operation ( QueueEntry *  entry)

Sends a Message to the source_process of the Entry and removes the Entry from the queue.

Parameters
*entryThe entry which should be finished.

Definition at line 289 of file fat_coop.c.

References coop_mt_init(), coop_mt_stop(), NULL, and process_post().

void operation ( void *  data)

FIXME: Ring Buffer functionality does not work, because cfs_write does not know, that the buffer may wrap around

Definition at line 179 of file fat_coop.c.

References cfs_close(), cfs_closedir(), cfs_open(), cfs_opendir(), cfs_readdir(), cfs_remove(), cfs_seek(), fat_fd_pool, and NULL.

Referenced by coop_mt_init().

void perform_next_step ( QueueEntry *  entry)

Changes Stack pointer to internal Thread.

Returns after one step has been completed.

If this function was called with one specific QueueEntry, then this function must be called again and again with the same QueueEntry, until the QueueEntry is finished executing.

Parameters
*entryThe QueueEntry, which should be processed.

Definition at line 198 of file fat-coop-arch.c.

References coop_mt_init(), coop_switch_sp(), and NULL.