diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" index 89f7673194152e4dcd4500e241e3ac540dece9ad..d1246f4555d5536267f6e64c8e5e9f4d87c80a4d 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/README.md" @@ -12,6 +12,8 @@ - [wifilocator - WiFi定位](./wifilocator.md) - [atcmd - 发送AT指令](./atcmd.md) - [machine - 硬件相关功能](./machine.md) +- [misc - 其他](./misc.md) +- [qrcode - 二维码显示](./qrcode.md) - [...](./....md) - + \ No newline at end of file diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.ADC.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.ADC.md" new file mode 100644 index 0000000000000000000000000000000000000000..8da21abcfd3a388e002e5bc5f585477c492ad0c6 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.ADC.md" @@ -0,0 +1,82 @@ + 本文阐述了QuecPython的misc.ADC类的用法,描述了misc.ADC类最新版本的特性。 + +# class ADC - 电压采集功能 + +用于采集电压信号。 + +## 构造函数 + +### `misc.ADC` + +```python +class misc.ADC() +``` + +**示例:** + +```python +from misc import ADC +adc = ADC() +``` + +## 方法 + +### `ADC.open` + +```python +ADC.open() +``` + +ADC功能初始化。 + +**返回值描述:** + +`0`表示初始化成功,`-1`表示初始化失败。 + +### `ADC.read` + +```python +ADC.read(ADCn) +``` + +读取指定通道的电压值,单位`mV`。 + +**参数描述:** + +- ADCn-ADC通道,int类型,点此查看支持的通道与对应引脚 + +**返回值描述:** + +成功返回指定通道电压值,错误返回整型`-1`。 + +**示例:** + +```python +>>>adc.read(ADC.ADC0) #读取ADC通道0电压值 +613 +>>>adc.read(ADC.ADC1) #读取ADC通道1电压值 +605 +``` + +**ADC通道与物理引脚的映射关系:** + +EC100Y平台对应引脚如下
ADC0 – 引脚号39
ADC1 – 引脚号81
EC600S/EC600N平台对应引脚如下
ADC0 – 引脚号19
EC600M平台对应引脚如下
ADC0 – 引脚号19
ADC1 – 引脚号20
EC800N平台对应引脚如下
ADC0 – 引脚号9
EC600U平台对应引脚如下
ADC0 – 引脚号19
ADC1 – 引脚号20
ADC2 – 引脚号113
ADC3 – 引脚号114
EC200U平台对应引脚如下
ADC0 – 引脚号45
ADC1 – 引脚号44
ADC2 – 引脚号43
EC200A平台对应引脚如下
ADC0 – 引脚号45
ADC1 – 引脚号44
BG95M3平台对应引脚如下
ADC0 – 引脚号24
EG915U平台对应引脚如下
ADC0 – 引脚号24
ADC1 – 引脚号2
EC800M平台对应引脚如下
ADC0 – 引脚号9
ADC1 – 引脚号96
EG912N平台对应引脚如下
ADC0 – 引脚号24
ADC1 – 引脚号2 + +### ADC.close + +```python +ADC.close() +``` + +**返回值描述:** + +`0`表示关闭成功,`-1`表示关闭失败。 + +## 常量 + +| 常量 | 说明 | 适用平台 | +| -------- | -------- | ------------------------------------------------------------ | +| ADC.ADC0 | ADC通道0 | EC600S/EC600N/EC100Y/EC600U/EC200U/BC25PA/EC800N/BG95M3/EC200A/EC600M/EG915U/EC800M/EG912N | +| ADC.ADC1 | ADC通道1 | EC600U/EC200U/EC200A/EC600M/EG915U/EC800M/EG912N | +| ADC.ADC2 | ADC通道2 | EC600U/EC200U | +| ADC.ADC3 | ADC通道3 | EC600U | \ No newline at end of file diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.PWM.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.PWM.md" new file mode 100644 index 0000000000000000000000000000000000000000..f2f9e34a0004bcba67a7b3dafba5bb4809022bed --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.PWM.md" @@ -0,0 +1,89 @@ + 本文阐述了QuecPython的misc.PWM类的用法,描述了misc.PWM类最新版本的特性。 + +# class PWM - 脉宽调制 + +提供脉宽调制输出功能。 + +> 注意:BC25PA平台不支持此模块。 + +## 构造函数 + +### `misc.PWM` + +```python +class misc.PWM(PWM.PWMn,PWM.ABOVE_xx, highTime, cycleTime) +``` + +**参数描述:** + +- PWM.PWMn-PWM通道,int类型,点此查看支持的通道与对应引脚; + +- PWM.ABOVE_xx-时间取值范围,int类型,说明如下: + + EC600SCN/EC600N/EC800N/EC600M/EC800M/EG912N平台:
PWM.ABOVE_MS ms级取值范围:(0,1023]
PWM.ABOVE_1US us级取值范围:(0,157]
PWM.ABOVE_10US us级取值范围:(1,1575]
PWM.ABOVE_BELOW_US ns级 取值(0,1024]
EC200U/EC600U/EG915U平台:
PWM.ABOVE_MS ms级取值范围:(0,10]
PWM.ABOVE_1US us级取值范围:(0,10000]
PWM.ABOVE_10US us级取值范围:(1,10000]
PWM.ABOVE_BELOW_US ns级 取值[100,65535] + +- highTime-高电平时间,int类型,说明如下: + + ms级时,单位为ms
us级时,单位为us
ns级别:需要使用者计算
频率 = 13Mhz / cycleTime
占空比 = highTime/ cycleTime + +- cycleTime-周期时间,int类型,说明如下: + + ms级时,单位为ms
us级时,单位为us
ns级别:需要使用者计算
频率 = 13Mhz / cycleTime
占空比 = highTime/ cycleTime + +**示例:** + +```python + from misc import PWM + pwm1 = PWM(PWM.PWM1, PWM.ABOVE_MS, 1, 2) +``` + +**PWM通道与物理引脚的映射关系:** + +EC100YCN平台,支持PWM0-PWM3,对应引脚如下:
PWM0 – 引脚号19
PWM1 – 引脚号18
PWM2 – 引脚号23
PWM3 – 引脚号22
EC600SCN/EC600N平台,支持PWM0-PWM3,对应引脚如下:
PWM0 – 引脚号52
PWM1 – 引脚号53
PWM2 – 引脚号70
PWM3 – 引脚号69
EC800N平台,支持PWM0-PWM3,对应引脚如下:
PWM0 – 引脚号79
PWM1 – 引脚号78
PWM2 – 引脚号16
PWM3 – 引脚号49
EC200UCN平台,支持PWM0,对应引脚如下:
PWM0 – 引脚号135
EC600UCN平台,支持PWM0,对应引脚如下:
PWM0 – 引脚号70
EC600M平台,支持PWM0-PWM3,对应引脚如下:
PWM0 – 引脚号57
PWM1 – 引脚号56
PWM2 – 引脚号70
PWM3 – 引脚号69
EG915U平台,支持PWM0,对应引脚如下:
PWM0 – 引脚号20
EC800M平台,支持PWM0-PWM3,对应引脚如下:
PWM0 – 引脚号83
PWM1 – 引脚号78
PWM2 – 引脚号16
PWM3 – 引脚号49
EG912N平台,支持PWM0-PWM3,对应引脚如下:
PWM0 – 引脚号21
PWM1 – 引脚号116
PWM2 – 引脚号107
PWM3 – 引脚号92 + +## 方法 + +### `PWM.open` + +```python +PWM.open() +``` + +该方法用于开启PWM输出。 + +**返回值描述:** + +`0`表示开启成功,`-1`表示开启失败。 + +### `PWM.close` + +``` +PWM.close() +``` + +该方法用于关闭PWM输出。 + +**返回值描述:** + +`0`表示关闭成功,`-1`表示关闭失败。 + +**示例:** + +```python +from misc import PWM +import utime +if __name__ == '__main__': + pwm = PWM(PWM.PWM0, PWM.ABOVE_MS, 1, 2) # 初始化一个pwm对象 + pwm.open() # 开启PWM输出 + utime.sleep(10) + pwm.close() # 关闭pwm输出 +``` + +## 常量 + +| 常量 | 说明 | 使用平台 | +| -------- | ---- | ------------------------------------------------------------ | +| PWM.PWM0 | PWM0 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC800N/EC600M/EG915U/EC800M/EG912N | +| PWM.PWM1 | PWM1 | EC600S / EC600N / EC100Y/EC800N/EC600M/EC800M/EG912N | +| PWM.PWM2 | PWM2 | EC600S / EC600N / EC100Y/EC800N/EC600M/EC800M/EG912N | +| PWM.PWM3 | PWM3 | EC600S / EC600N / EC100Y/EC800N/EC600M/EC800M/EG912N | \ No newline at end of file diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.Power.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.Power.md" new file mode 100644 index 0000000000000000000000000000000000000000..42f6ccce5235e3ef4d530b13761c66d269e32c9b --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.Power.md" @@ -0,0 +1,108 @@ +``` +本文阐述了QuecPython的misc模块的power子模块的用法,描述了power模块最新版本的特性。 +``` + + + +# power - 关机以及软件重启 + +模块功能: 提供关机、软件重启、开机原因、上次关机原因、获取电池电压功能。 + +## 关机功能 + +### `Power.powerDown` + +```python +Power.powerDown() +``` + +模块关机。 + +**示例:** + +```python +from misc import Power + +Power.powerDown() +``` + +## 重启功能 + +### `Power.powerRestart` + +```python +Power.powerRestart() +``` + +模块重启。 + +## 获取开机原因功能 + +### `Power.powerOnReason` + +```python +Power.powerOnReason() +``` + +获取开机原因。 + +**返回值描述:** + +| 值 | 说明 | +| ---- | -------------------------------- | +| 0 | 获取开机原因失败或者开机原因未知 | +| 1 | 按 PWRKEY 开机 | +| 2 | 按 RESET 重启 | +| 3 | VBAT 触发的开机 | +| 4 | RTC 定时开机 | +| 5 | watchdog 触发重启或异常开机 | +| 6 | VBUS 触发的开机 | +| 7 | 充电开机 | +| 8 | PSM 唤醒开机 | +| 9 | 发生 Dump 后重启 | + +## 获取上次关机原因 + +### `Power.powerDownReason` + +``` +Power.powerDownReason() +``` + +获取关机原因。 + +**返回值描述:** + +| 值 | 说明 | +| ---- | --------------------- | +| 0 | 原因未知 | +| 1 | 正常关机 | +| 2 | 供电电压过高导致关机 | +| 3 | 供电电压过低导致关机 | +| 4 | 温度过高导致关机 | +| 5 | 看门狗触发的关机 | +| 6 | VRTC 电压过低触发关机 | + +> 注意:BC25PA平台和EC200U/EC600U平台不支持此方法。 + +## 获取电池电压 + +### `Power.getVbatt` + +```python +Power.getVbatt() +``` + +获取电池电压,单位mV。 + +**返回值描述:** + +返回整形电压值。 + +**示例:** + +```python +>>> Power.getVbatt() +3590 +``` + diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.PowerKey.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.PowerKey.md" new file mode 100644 index 0000000000000000000000000000000000000000..86e3dd915adea7f5e41e78e88f4ca5479d81e676 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.PowerKey.md" @@ -0,0 +1,78 @@ + 本文阐述了QuecPython的misc.PowerKey类的用法,描述了misc.PowerKey类最新版本的特性。 + +# class PowerKey - power key按键回调注册功能 + +提供power key按键注册回调功能接口。 + +## 构造函数 + +### `misc.PowerKey` + +```python +class misc.PowerKey() +``` + +**返回值描述:** + +返回创建的对象 + +**示例:** + +```python +from misc import PowerKey +pk = PowerKey() +``` + +## 方法 + +### `PowerKey.powerKeyEventRegister` + +```python +PowerKey.powerKeyEventRegister(usrFun) +``` + +该方法用于注册powerkey按键的回调函数。 + +**参数描述:** + +- usrfun-回调函数,原型usrfun(status),参数status:`0`表示松开,`1`表示按下;按下或松开powerkey按键时触发回调。 + +**返回值描述:** + +`0`表示注册成功,`-1`表示注册失败。 + +> 注意:EC600S/EC600N等ASR平台,对于powerkey,按下和松开时,都会触发用户注册的回调函数; +> +> EC200U/EC600U等展锐平台,对于powerkey,只在按键松开时才会触发回调函数,并且按键按下的时间需要维持500ms以上。 + +**示例:** + +EC600S/EC600N平台: + +```python +from misc import PowerKey + +pk = PowerKey() + +def pwk_callback(status): + if status == 0: + print('powerkey release.') + elif status == 1: + print('powerkey press.') + +pk.powerKeyEventRegister(pwk_callback) +``` + +EC200U/EC600U平台: + +```python +from misc import PowerKey + +pk = PowerKey() + +def pwk_callback(status): + if status == 0: # 只有按键释放时才会触发回调 + print('powerkey release.') + +pk.powerKeyEventRegister(pwk_callback) +``` diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.USB.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.USB.md" new file mode 100644 index 0000000000000000000000000000000000000000..df516290228c0a3e5496799b4cbe88ed2910fb03 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.USB.md" @@ -0,0 +1,71 @@ + 本文阐述了QuecPython的misc.USB类的用法,描述了misc.USB类最新版本的特性。 + +# class USB - USB插拔检测 + +提供USB插拔检测功能。 + +> 注意:当前仅EC600S/EC600N/EC800N/EC200U/EC600U平台支持该功能。 + +## 构造函数 + +### `misc.USB` + +```python +class misc.USB() +``` + +**示例:** + +```python +from misc import USB +usb = USB() +``` + +## 方法 + +### `USB.getStatus` + +```python +USB.getStatus() +``` + +该方法用于获取当前USB连接状态。 + +**返回值描述:** + +`-1` 表示 获取状态失败,`0 `表示USB当前没有连接,`1 `表示 USB已连接。 + +### `usb.setCallback` + +``` +usb.setCallback(usrFun) +``` + +该方法用于注册USB插拔回调函数,当USB插入或者拔出时,会触发回调来通知用户当前USB状态。 + +**参数描述:** + +- usrFun -回调函数,原型usrFun (conn_status),参数conn_status:`0`表示未连接,`1`表示连接。 + +**返回值描述:** + +`0`表示注册成功,`-1`表示注册失败。 + +> 注意:回调函数中不要进行阻塞性的操作。 + +**示例:** + +```python +from misc import USB + +usb = USB() + +def usb_callback(conn_status): + status = conn_status + if status == 0: + print('USB is disconnected.') + elif status == 1: + print('USB is connected.') +usb.setCallback(usb_callback) +``` + diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.USBNET.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.USBNET.md" new file mode 100644 index 0000000000000000000000000000000000000000..482a89a4470cdb6a667ffbf7943e8eae78d10350 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.USBNET.md" @@ -0,0 +1,167 @@ +``` +本文阐述了QuecPython的misc模块的USBNET子模块的用法,描述了USBNET模块最新版本的特性。 +``` + + + +# USBNET - USB网卡功能 + +模块功能: 提供USB网卡功能。 + +> 注意:当前仅EC600S/EC600N/EC800N/EC200U/EC600U/EC800G平台支持该功能。 + +## 设置USB网卡工作类型(重启生效) + +### `USBNET.set_worktype` + +```python +USBNET.set_worktype(type) +``` + +**参数描述:** + +- type-USBNET 工作类型, int类型,Type_ECM:ECM模式, Type_RNDIS:RNDIS模式。 + +**返回值描述:** + +`0`表示设置成功,`-1`表示设置失败。 + +## 获取USB网卡工作类型(重启生效) + +### `USBNET.get_worktype` + +```python +USBNET.get_worktype() +``` + +**返回值描述:** + +成功返回USBNET当前工作类型,失败返回整型`-1`;`1`表示ECM模式,`3 `表示 RNDIS模式。 + +## 获取USBNET当前状态 + +### `USBNET.get_status` + +```python +USBNET.get_status() +``` + +**返回值描述:** + +成功返回USBNET当前状态,失败返回整型`-1`;`0`表示未连接,`1`表示连接成功。 + +## 打开USB网卡 + +### `USBNET.open` + +```python +USBNET.open() +``` + +**返回值描述:** + +`0`表示打开成功,`-1`表示打开失败。 + +## 关闭USB网卡 + +### `USBNET.close` + +``` +USBNET.close() +``` + +**返回值描述:** + +`0`表示关闭成功,`-1`表示关闭失败。 + +**示例:** + +```python +from misc import USBNET +from misc import Power + +#work on ECM mode default +USBNET.open() + +USBNET.set_worktype(USBNET.Type_RNDIS) + +#reset the module +Power.powerRestart() + + +#After restart +from misc import USBNET + +#work on RNDIS mode +USBNET.open() +``` + +## 获取Nat使能情况 + +### `USBNET.getNat` + +```python +USBNET.getNat(simid, pid) +``` + +获取某一路网卡的Nat使能情况(是否支持ipv6拨号)。 + +> 注意:(仅在EC200U/EC600U平台支持) + +**参数描述:** + +- simid-int类型,范围0/1,目前仅支持`0`; +- pid-PDP索引, int类型,展锐平台范围`1-7`。 + +**返回值描述:** + +成功:返回Nat使能情况,整型0/1,`0`:使能,支持ipv6拨号;`1`:未使能,不支持ipv6拨号。 + +失败:返回整型`-1`。 + +**示例:** + +```python +from misc import USBNET +USBNET.getNat(0, 1) +0 +``` + +## Nat设置 + +### `USBNET.setNat` + +```python +USBNET.setNat(simid, pid, Nat) +``` + +Nat设置,设置成功后重启生效(USBNET.set_worktype()接口调用的时候会使对应的Nat值变为1,使得该pid无法IPV6拨号,所以在close USBnet后,可以使用该接口关闭NAT,使IPV6功能正常)。 + +> 注意:仅在EC200U/EC600U平台支持 + +**参数描述:** + +- simid-int类型,范围0/1,目前仅支持`0`; +- pid-PDP索引, int类型,展锐平台范围`1-7`; +- Nat-int类型,范围:0/1,`0`:支持ipv6拨号;`1`:不支持ipv6拨号。 + +**返回值描述:** + +`0`表示设置成功,`-1`表示设置失败。 + +**示例:** + +```python +USBNET.setNat(0, 1, 0) +0 +``` + +## 常量 + +### `USBNET.Type_ECM` + +ECM工作模式 + +### `USBNET.Type_RNDIS` + +RNDIS工作模式 \ No newline at end of file diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.md" new file mode 100644 index 0000000000000000000000000000000000000000..c3250103f82b11312ab25336b058963062641004 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/misc.md" @@ -0,0 +1,59 @@ +``` +本文阐述了QuecPython的misc模块的用法,描述了misc模块最新版本的特性。 +``` + + + +# misc- 其他 + +模块功能: 提供关机、软件重启、PWM以及ADC相关功能。 + +## 分集天线配置接口功能 + +### `misc.antennaSecRXOffCtrl` + +```python +misc.antennaSecRXOffCtrl(*args) +``` + +分集天线配置、查询接口。(仅1803S平台支持该接口)。 + +**参数描述:** + +该接口为可变参形式: + 参数个数为0,查询:misc.antennaSecRXOffCtrl(); + 参数个数为1,配置:misc.antennaSecRXOffCtrl(SecRXOff_set)。 + +- SecRXOff_set-int类型,范围0/1, `0`:不关闭分集天线 `1`:关闭分集天线。 + +**返回值描述:** + +查询:成功返回分集天线配置,失败返回整形值`-1`; + +设置:成功返回整形0,失败返回整型值`-1`。 + +**示例:** + +```python +import misc + +misc.antennaSecRXOffCtrl() +0 +misc.antennaSecRXOffCtrl(1) +0 +misc.antennaSecRXOffCtrl() +1 +``` + +## Classes + +- [class PowerKey – PowerKey按键回调注册](./misc.PowerKey.md) +- [class PWM – 脉宽调制](./misc.PWM.md) +- [class ADC - 模数转换](./misc.ADC.md) +- [class USB– USB插拔检测](./misc.USB.md) + +## Submodules + +- [module Power – 关机以及软件重启](./misc.Power.md) + +- [module USBNET – USB网卡](./misc.USBNET.md) \ No newline at end of file diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/qrcode.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/qrcode.md" new file mode 100644 index 0000000000000000000000000000000000000000..66c8b5483f64f3a4ba532c0d9700634e3ef860a7 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/qrcode.md" @@ -0,0 +1,32 @@ +``` +本文阐述了QuecPython的qrcode模块的用法,描述了qrcode模块最新版本的特性。 +``` + + + +# qrcode- 二维码显示 + +模块功能:根据输入的内容,生成对应的二维码。 + +> 注意:BC25PA平台不支持此模块功能;使用该功能前,需要初始化LCD。 + +## 二维码显示功能 + +### `qrcode.show` + +```python +qrcode.show(qrcode_str,magnification,start_x,start_y,Background_color,Foreground_color) +``` + +**参数描述:** + +- qrcode_str-string类型,二维码内容; +- magnification-int类型,放大倍数[1,6]; +- start_x-int类型,二维码显示起始x坐标; +- start_y-int类型,二维码显示起始y坐标; +- Background_color-int类型,前景色(不设置即默认为0xffff); +- Foreground_color,int类型,背景色(不设置即默认为0x0000)。 + +**返回值描述:** + +`0`表示成功,`-1`表示生成二维码失败,`-2`表示放大失败,`-3`表示显示失败。 diff --git a/docs/API_reference/zh/sidebar.yaml b/docs/API_reference/zh/sidebar.yaml index 062a2a92d0383e8e03098e8b9939dd6dca4a0d4b..13a868d82bdbd5d54a030fc40f27e1372f671570 100644 --- a/docs/API_reference/zh/sidebar.yaml +++ b/docs/API_reference/zh/sidebar.yaml @@ -34,6 +34,16 @@ items: file: QuecPython标准库/uhashlib.md - label: QuecPython类库 file: QuecPython类库/README.md + items: + - label: misc - 其他 + file: QuecPython类库/misc.md + items: + - label: USBNET - USB网卡 + file: QuecPython类库/misc.USBNET.md + - label: Power - 关机和重启 + file: QuecPython类库/misc.Power.md + - label: qrcode - 二维码显示 + file: QuecPython类库/qrcode.md - label: QuecPython组件库 file: QuecPython组件库/README.md items: