static int CCM_HAL_PWR_UP_DWN_GetRfkillPath(char **rfkill_path,char* rfkill_type,int rfkill_type_len) { char path[64]; char buf[16]; int fd; int sz; int id; int found = 0; for (id = 0;; id++) { snprintf(path, sizeof(path), "/sys/class/rfkill/rfkill%d/type",id); fd = open(path, O_RDONLY); if (fd < 0) { MCP_HAL_LOG_ERROR(__FILE__, __LINE__, MCP_HAL_LOG_MODULE_TYPE_PM,("open(%s) failed: %s (%d)", path,strerror(errno), errno)); return CCM_HAL_PWR_UP_DWN_STATUS_FAILED; } sz = read(fd, &buf, sizeof(buf)); close(fd); if (sz >= rfkill_type_len && memcmp(buf, rfkill_type, rfkill_type_len) == 0) { found = 1; break; } } if (found == 0) { MCP_HAL_LOG_ERROR(__FILE__, __LINE__, MCP_HAL_LOG_MODULE_TYPE_PM,("Failed to find rfkill of type %s", rfkill_type)); return CCM_HAL_PWR_UP_DWN_STATUS_FAILED; } asprintf(rfkill_path, "/sys/class/rfkill/rfkill%d/state", id); return CCM_HAL_PWR_UP_DWN_STATUS_SUCCESS; }
/*--------------------------------------------------------------------------- * MCP_HAL_FS_Seek *--------------------------------------------------------------------------- * * Synopsis: moves the file pointer to a specified location. * * Returns: MCP_HAL_FS_STATUS_SUCCESS - if successful, * other - Operation failed. */ McpHalFsStatus MCP_HAL_FS_Seek( const McpHalFsFileDesc fd, McpS32 offset, McpHalFsSeekOrigin from ) { McpS32 origin; switch(from) { case MCP_HAL_FS_CUR: origin = SEEK_CUR; break; case MCP_HAL_FS_END: origin = SEEK_END; break; case MCP_HAL_FS_START: origin = SEEK_SET; break; default: MCP_HAL_LOG_ERROR(__FILE__, __LINE__, MCP_HAL_LOG_MODULE_TYPE_HAL_FS, ("MCP_HAL_FS_Seek: bad MCP_HAL_FsSeekOrigin: %d\n", from)); return MCP_HAL_FS_STATUS_ERROR_GENERAL; break; } if(lseek(fd,offset,origin) == -1 ) return _McpHalFs_ConvertLinuxErrorToFsError(); return MCP_HAL_FS_STATUS_SUCCESS; }
CcmHalPwrUpDwnStatus CCM_HAL_PWR_UP_DWN_WritePin(const char* pin_name, char *data, unsigned long data_len) { int pin_fd = -1; pin_fd = open(pin_name, O_WRONLY); if (pin_fd == -1) { MCP_HAL_LOG_ERROR(__FILE__, __LINE__, MCP_HAL_LOG_MODULE_TYPE_PM, ("CCM_HAL_PWR_UP_DWN_Reset: open %s failed: %s\n", pin_name, strerror(errno))); return CCM_HAL_PWR_UP_DWN_STATUS_FAILED; } if (1 != write(pin_fd, data, data_len)) { MCP_HAL_LOG_ERROR(__FILE__, __LINE__, MCP_HAL_LOG_MODULE_TYPE_PM, ("CCM_HAL_PWR_UP_DWN_Init: write failed: %s\n", strerror(errno))); return CCM_HAL_PWR_UP_DWN_STATUS_FAILED; } if (-1 == close(pin_fd)) MCP_HAL_LOG_ERROR(__FILE__, __LINE__, MCP_HAL_LOG_MODULE_TYPE_PM, ("CCM_HAL_PWR_UP_DWN_Shutdown: close failed: %s\n", strerror(errno))); return CCM_HAL_PWR_UP_DWN_STATUS_SUCCESS; }
/*--------------------------------------------------------------------------- * MCP_HAL_FS_Write *--------------------------------------------------------------------------- * * Synopsis: write file * * Returns: MCP_HAL_FS_STATUS_SUCCESS - if successful, * other - if failed. */ McpHalFsStatus MCP_HAL_FS_Write( const McpHalFsFileDesc fd, void* buf, McpU32 nSize, McpU32 *numWritten ) { int sNumWritten; sNumWritten = write(fd,buf,nSize); if (sNumWritten < 0) { MCP_HAL_LOG_ERROR(__FILE__, __LINE__, MCP_HAL_LOG_MODULE_TYPE_HAL_FS, ("MCP_HAL_FS_Write: write failed: %s\n", strerror(errno))); *numWritten = 0; return _McpHalFs_ConvertLinuxErrorToFsError(); } *numWritten = (McpU32)sNumWritten; return MCP_HAL_FS_STATUS_SUCCESS; }
/*--------------------------------------------------------------------------- * MCP_HAL_FS_Read *--------------------------------------------------------------------------- * * Synopsis: read file * * Return: MCP_HAL_FS_STATUS_SUCCESS if success, * other - if failed. * */ McpHalFsStatus MCP_HAL_FS_Read ( const McpHalFsFileDesc fd, void* buf, McpU32 nSize, McpU32 *numRead ) { int sNumRead; sNumRead = read(fd,buf,nSize); if (sNumRead < 0) { MCP_HAL_LOG_ERROR(__FILE__, __LINE__, MCP_HAL_LOG_MODULE_TYPE_HAL_FS, ("MCP_HAL_FS_Read: read failed: %s\n", strerror(errno))); *numRead = 0; return _McpHalFs_ConvertLinuxErrorToFsError(); } *numRead = (McpU32)sNumRead; return MCP_HAL_FS_STATUS_SUCCESS; }
void MCP_HAL_MISC_Assert(const char *expression, const char *file, McpU16 line) { MCP_HAL_LOG_ERROR(file, line, MCP_HAL_LOG_MODULE_TYPE_ASSERT, (expression)); sleep(5); abort(); }