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();
}