📄 dev.h
字号:
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
#define _sd_inserted_ejected() \
{ TRACE0(448, dev, 0, "_sd_inserted_ejected()"); \
_lun_data_wr(k_lun_sd, media, (_lun_data_rd(k_lun_sd, media)|(kbm_lun_media_present|kbm_lun_media_unknown|kbm_lun_media_changed)));\
_mcu_register_clr_bits(x_crd_ps, kbm_crd_ps_sd); \
_lun_data_wr(k_lun_mmc, media, (_lun_data_rd(k_lun_mmc, media)|(kbm_lun_media_present|kbm_lun_media_unknown|kbm_lun_media_changed)));\
_mcu_register_clr_bits(x_crd_ps, kbm_crd_ps_mmc); \
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
#define _dev_soft_reset() \
{ \
TRACE0(449, dev, 0, "_dev_soft_reset()"); \
/* XBYTE[0x3F22] |= 0x01; */ \
_mcu_register_set_bits(x_util_config, 0x40); \
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
#define _dev_sense_vbus() ((_mcu_register_rd(x_gpioa_in) & kbm_gpio3) ? k_true : k_false)
//------------------------------------------------------------------------------
// prototypes
void dev_indicate_bus_speed(void) reentrant;
void dev_gpio_power_down(void) reentrant;
void dev_turn_off_activity_indicator(void) reentrant;
void dev_toggle_activity_indicator(void) reentrant;
uint8 dev_rd_most_recent_config(void) reentrant;
void dev_wr_most_recent_config(uint8 cfg) reentrant;
//------------------------------------------------------------------------------
// attributes
extern xdata uint8 g_dev_attr_lo;
// extern xdata uint8 g_dev_attr_hl;
// extern xdata uint8 g_dev_attr_lh;
// extern xdata uint8 g_dev_attr_hi;
// lsw lsb bit 0: sm_timing
// 1 - nand flash chips will use the slower, smart media compatible r/w cycle time
// (default) 0 - nand flash chips will use the faster 50ns r/w cycle timing for chips that are capable
#define kbm_attr_lo_sm_timing 0x01
// lsw lsb bit 1: enum_hd_as_rm
// 1 - nand flash hard drives to always enumerate as removable media. */
// (default) 0 - nand flash hd's enum as removable when write protected, as fixed when not-write protected */
#define kbm_attr_lo_hd_as_rm 0x02
// lsw lsb bit 2: Behavior of gpio5
// 1 - Use the bit as a sd insert indicator
// (default) 0 - Use as a HS indicator
#define kbm_attr_lo_gpio5_as_sd_insert 0x04
// lsw lsb bit 3: Behavior of iSerial byte in device descriptor
// 1 - Always report iSerial as zero in the device descriptor
// (default) 0 - Report non-zero iSerial in device descriptor if serial number is valid
#define kbm_attr_lo_force_zero_iserial 0x08
// lsw lsb bit 4: Specifies which fields to use when building inquiry string
// 1 - Use IMIDS (offset 228, size 8) and IPIDS (offset 236, size 5) for inquiry
// (default) 0 - Build IMIDS and IPIDS from MFR (offset 94, size 60) and PRD (offset 94, size 60) by converting from UNICODE->printable ascii.
#define kbm_attr_lo_use_inq_mfr_prd_ids 0x10
// lsw lsb bit 5: Specifies state of the activity led on Suspend
// 1 - The gpio for the activity led is set to high on a suspend, irrespective of the idle state.
// (default) 0 - The gpio for the activity led is set to low on a suspend, irrespective of the idle state.
#define kbm_attr_lo_activity_led_gpio_hi_on_spd 0x20
/* default to use fastest mode available. Reads/Writes to the nand */
/* nvstore use PIO, not FMDU, so we'll always be able to use WriteEE to */
/* force nand to use Smart Media compatible timings should there be a problem. */
#define k_attr_lo_default 0x00
#define k_attr_hl_default 0x00
#define k_attr_lh_default 0x00
#define k_attr_hi_default 0x00
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// nvstore parameter indexes and sizes
// usb/mass storage serial number string descriptor
#define k_ix_ser 0
#define k_sz_ser 26
// usb vid/pid
#define k_ix_vid_lo 26
#define k_ix_vid_hi 27
#define k_ix_pid_lo 28
#define k_ix_pid_hi 29
// usb language string descriptor
#define k_ix_lng 30
#define k_sz_lng 4
// usb manufacturer string descriptor
#define k_ix_mfr 34
#define k_sz_mfr 60
// usb product string descriptor
#define k_ix_prd 94
#define k_sz_prd 60
#define k_ix_attr_lo 154
#define k_ix_attr_hl 155
#define k_ix_attr_lh 156
#define k_ix_attr_hi 157
#define k_ix_password 158
#define k_sz_password 14
//Locations for the cfg dscr mods
#define k_ix_bmattrib 172
#define k_ix_maxpwr 173
//locations for the blinking media access lights
#define k_ix_blink_interval 174
#define k_ix_blinks_after_access 175
#define k_sz_lun_id 7
#define k_ix_lun0_id 176
#define k_ix_lun1_id 183
#define k_ix_lun2_id 190
#define k_ix_lun3_id 197
//vendor specific secure memory
#define k_ix_secure_mem 204
//vendor info for inquiry
#define k_ix_inq_vid 228
#define k_sz_inq_vid 8
//product info header for inquiry
#define k_ix_inq_pid_hdr 236
#define k_sz_inq_pid_hdr 5
// 241<->251 reserved
// structure signature index
#define k_ix_sig_hi 252
#define k_ix_sig_lh 253
#define k_ix_sig_hl 254
#define k_ix_sig_lo 255
// ata0 format signature
#define k_sig_ata0_hi 0x61 // 'a'
#define k_sig_ata0_lh 0x74 // 't'
#define k_sig_ata0_hl 0x61 // 'a'
#define k_sig_ata0_lo 0x30 // '0'
// ata1 format signature
#define k_sig_ata1_hi 0x61 // 'a'
#define k_sig_ata1_lh 0x74 // 't'
#define k_sig_ata1_hl 0x61 // 'a'
#define k_sig_ata1_lo 0x31 // '1'
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
extern xdata uint8 g_led_state;
extern uint8 g_blink_interval;
extern bit g_activity_led_idle_bright;
extern uint8 g_post_access_blink_secs;
extern xdata uint8 g_nvstore_post_access_blink_secs;
extern xdata uint8 g_inq_vid[k_sz_inq_vid];
extern xdata uint8 g_inq_pid_hdr[k_sz_inq_pid_hdr];
extern void nvstore_write_enable() reentrant;
extern void nvstore_write_disable() reentrant;
extern void nvstore_write(uint8 addr, uint8 value) reentrant;
extern uint8 nvstore_read(uint8 addr) reentrant;
extern void dev_toggle_led(void) reentrant;
//---eof------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -