//---------------------------------------- int file_open(const char* file, int flags) { VMUINT fs_mode; if(flags & O_CREAT) { fs_mode = VM_FS_MODE_CREATE_ALWAYS_WRITE; } else if((flags & O_RDWR) || (flags & O_WRONLY)) { fs_mode = VM_FS_MODE_WRITE; } else { fs_mode = VM_FS_MODE_READ; } if(flags & O_APPEND) { fs_mode |= VM_FS_MODE_APPEND; } g_fcall_message.message_id = CCALL_MESSAGE_FOPEN; g_CCparams.cpar1 = (char *)file; g_CCparams.ipar1 = fs_mode; vm_thread_send_message(g_main_handle, &g_fcall_message); // wait for call to finish... vm_signal_wait(g_shell_signal); return g_shell_result; }
//--------------------- int file_size(int file) { g_fcall_message.message_id = CCALL_MESSAGE_FSIZE; g_CCparams.ipar1 = file; vm_thread_send_message(g_main_handle, &g_fcall_message); // wait for call to finish... vm_signal_wait(g_shell_signal); return g_shell_result; }
int LWiFiClass::disconnect(void) { LWiFiDisconnectContext context; LTask.remoteCall(&wifiDisconnect, &context); vm_signal_wait(context.sigDisconnect); return 0; }
//----------------------------------- int file_exists(const char *filename) { g_fcall_message.message_id = CCALL_MESSAGE_FCHECK; g_CCparams.cpar1 = (char *)filename; g_CCparams.ipar1 = VM_FS_MODE_READ; vm_thread_send_message(g_main_handle, &g_fcall_message); // wait for call to finish... vm_signal_wait(g_shell_signal); return g_shell_result; }
//--------------------------------------------- int file_seek(int file, int offset, int whence) { g_fcall_message.message_id = CCALL_MESSAGE_FSEEK; g_CCparams.ipar1 = file; g_CCparams.ipar2 = offset; g_CCparams.ipar3 = whence + 1; vm_thread_send_message(g_main_handle, &g_fcall_message); // wait for call to finish... vm_signal_wait(g_shell_signal); return g_shell_result; }
//------------------------------------------ int file_write(int file, char* ptr, int len) { g_fcall_message.message_id = CCALL_MESSAGE_FWRITE; g_CCparams.ipar1 = file; g_CCparams.ipar2 = len; g_CCparams.cpar1 = ptr; vm_thread_send_message(g_main_handle, &g_fcall_message); // wait for call to finish... vm_signal_wait(g_shell_signal); return g_shell_result; }
int retarget_getc(void) { char ch; if (retarget_rx_buffer_head == retarget_rx_buffer_tail) { vm_signal_wait(retarget_rx_signal_id); } ch = retarget_rx_buffer[retarget_rx_buffer_tail % SERIAL_BUFFER_SIZE]; retarget_rx_buffer_tail++; return ch; }
size_t LBTServerClass::write(const uint8_t data) { LBTServerReadWriteContext c; c.buf = (void*)&data; c.len = 1; if (!m_post_write) { APP_LOG((char*)"LBTServerClass::write wait"); vm_signal_wait(m_signal_write); // wait for VM_SRV_SPP_EVENT_READY_TO_WRITE APP_LOG((char*)"LBTServerClass::write wait ok"); } vm_signal_clean(m_signal_write); m_post_write = 0; remoteCall(btServerWrite, (void*)&c); m_post_write = 1; return c.lenProcessed; }