Rename library

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   VL53L3CX_NoShield_1Sensor_poll_Mb06x VL53L3_NoShield_1Sensor_polling_Mb63 X_NUCLEO_53L3A2 53L3A2_Ranging

modules/vl53lx_silicon_core.c

Committer:
charlesmn
Date:
2021-07-21
Revision:
7:7f1bbf370283
Parent:
5:89031b2f5316

File content as of revision 7:7f1bbf370283:


// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
/******************************************************************************
 * Copyright (c) 2020, STMicroelectronics - All Rights Reserved

 This file is part of VL53LX and is dual licensed,
 either GPL-2.0+
 or 'BSD 3-clause "New" or "Revised" License' , at your option.
 ******************************************************************************
 */





#include "vl53lx_platform.h"
#include "vl53lx_ll_def.h"
#include "vl53lx_register_map.h"
#include "vl53lx_core.h"
#include "vl53lx_silicon_core.h"


#define LOG_FUNCTION_START(fmt, ...) \
	_LOG_FUNCTION_START(VL53LX_TRACE_MODULE_CORE, fmt, ##__VA_ARGS__)
#define LOG_FUNCTION_END(status, ...) \
	_LOG_FUNCTION_END(VL53LX_TRACE_MODULE_CORE, status, ##__VA_ARGS__)
#define LOG_FUNCTION_END_FMT(status, fmt, ...) \
	_LOG_FUNCTION_END_FMT(VL53LX_TRACE_MODULE_CORE,\
			status, fmt, ##__VA_ARGS__)


VL53LX_Error VL53LX_is_firmware_ready_silicon(
	VL53LX_DEV     Dev,
	uint8_t       *pready)
{


	VL53LX_Error status = VL53LX_ERROR_NONE;
	VL53LX_LLDriverData_t *pdev = VL53LXDevStructGetLLDriverHandle(Dev);

	uint8_t  comms_buffer[5];

	LOG_FUNCTION_START("");



	status = VL53LX_ReadMulti(
				Dev,
				VL53LX_INTERRUPT_MANAGER__ENABLES,
				comms_buffer,
				5);

	if (status != VL53LX_ERROR_NONE)
		goto ENDFUNC;

	pdev->dbg_results.interrupt_manager__enables =
			comms_buffer[0];
	pdev->dbg_results.interrupt_manager__clear =
			comms_buffer[1];
	pdev->dbg_results.interrupt_manager__status =
			comms_buffer[2];
	pdev->dbg_results.mcu_to_host_bank__wr_access_en =
			comms_buffer[3];
	pdev->dbg_results.power_management__go1_reset_status =
			comms_buffer[4];

	if ((pdev->sys_ctrl.power_management__go1_power_force & 0x01)
			== 0x01) {

		if (((pdev->dbg_results.interrupt_manager__enables &
				0x1F) == 0x1F) &&
			((pdev->dbg_results.interrupt_manager__clear
					& 0x1F) == 0x1F))
			*pready = 0x01;
		else
			*pready = 0x00;

	} else {


		if ((pdev->dbg_results.power_management__go1_reset_status
				& 0x01) == 0x00)
			*pready = 0x01;
		else
			*pready = 0x00;
	}


ENDFUNC:
	LOG_FUNCTION_END(status);

	return status;
}