/*
 * navikit.h
 *
 *  Created on: Apr 17, 2020
 *      Author: oarap
 */

#ifndef INC_NAVIKIT_H_
#define INC_NAVIKIT_H_

#include "stdbool.h"

typedef enum
{
	shutdown,	//only mcu runing
	runing, 		//all function runing
	sleep, 		//SOCs and FANs are stop
	dfu
}sta_t;


typedef struct
{
	struct{
		sta_t sta;			//current system state
		sta_t next_sta;			//current system state
		bool power_btn;	//开关是否被按下
		bool custom_btn;
		bool pwr_led;
		bool run_led;
	}sys;

	struct{

		bool fan_1;
		bool fan_2;
		bool fan_3;
	}status;


	struct{
		bool mod_sleep;
		bool power_en;
		bool shutdown_req;
		bool sys_reset;
		bool force_recovery;
		bool sleep_wake;
	}som;//som power management

	struct{
			float out_24v_div16;
			float out_5v_div8;
			float out_12v_div8;
			float bkp_bat_div8;
			float main_pwr_div16;

			bool pmb_temp_sen_en;
			bool pmb_temp_sen_alt;
			bool pmb_coulomb_alcc;
			bool pmb_chrg_stat2;
			bool pmg_chrg_stat1;

			struct{
				float voltage;
				float current;
				float cap;
				float temp;
			}coulomb;
	}pmb;//power management board
	
	struct{
		bool u2_vbus_1;
		bool u2_vbus_2;
		bool u2_vbus_3;
		bool u2_vbus_4;
		bool u2_vbus_5;
		bool u2_vbus_6;

		bool u3_vbus_1;
		bool u3_vbus_2;
		bool u3_vbus_3;
		bool u3_vbus_4;
		bool u3_vbus_5;
		bool u3_vbus_6;
	}port;
	struct{
		bool u2_hub_pwr;
		bool u3_hub_pwr;
		bool u3_host_pwr;
		bool u3_gec_pwr;
		bool ge_sw_pwr;
	}soc;
	struct{
		bool fan_valid_1;
		bool fan_valid_2;
		bool fan_valid_3;
	}fan;


	
	struct {
		float sensor_1;
		float sensor_2;
		float sensor_3;
	}temp;

}NaviKit_t;
extern NaviKit_t NaviKit;

void NaviKit_var_init();

#endif /* INC_NAVIKIT_H_ */
