なんとかなるさね

マイコンをネタにブログを始めてみました


RXマイコン基板(RX62N) | USBマルチファンクションファームウェアを作るには? (7) 

現在、あまりに酷いやっつけ作業でルネサスのソースコードを改造してしまったところを見直し中なのですが、
Renesas MCU Software LibraryからダウンロードしたUSBファームウェアのソースコードで、USBのコン
フィグレーションディスクリプタで定義されるインターフェイス番号が0であると仮定されている点は、以下の
ようなマクロを作成して、対応することにしました。

#define usb_phid_get_InterfaceDiscriptorAddress() (usb_gphid_ConPtr[0] + USB_DEV_DSC_INTERFACE)
#define usb_phid_get_interface_number() (*(usb_phid_get_InterfaceDiscriptorAddress() + 2))

#define usb_pmsc_get_InterfaceDiscriptorAddress() (usb_gpmsc_ConPtr[0] + USB_DEV_DSC_INTERFACE)
#define usb_pmsc_get_interface_number() (*(usb_pmsc_get_InterfaceDiscriptorAddress() + 2))

#define usb_pcdc_get_InterfaceDiscriptorAddress() (usb_gpcdc_ConPtr[0] + USB_DEV_DSC_INTERFACE)
#define usb_pcdc_get_interface_number() (*(usb_pcdc_get_InterfaceDiscriptorAddress() + 2))


対応前(それぞれ他にも何箇所かあります)

void usb_phid_ControlGetReport1( USB_UTR_t *ptr )
{
    /* Check Setup packet Request Index and Request Value */
    if ( (usb_gphid_Request.ReqIndex == 0 ) && ( (usb_gphid_Request.ReqValue & USB_DT_INDEX) == 0 ) )
    {

。。。以後省略。。。

void R_usb_pmsc_ControlTrans1(USB_UTR_t *ptr, USB_REQUEST_t *req)
{
    if( (req->ReqIndex == 0) && (req->ReqTypeRecip == USB_INTERFACE) )
    {

。。。以後省略。。。

void usb_pcdc_ControlTrans1(USB_UTR_t *ptr, USB_REQUEST_t *req)
{
    /* Is a request receive target Interface? */
    if( (req->ReqIndex == 0) && (req->ReqTypeRecip == USB_INTERFACE) )
    {

。。。以後省略。。。

対応後(それぞれ他にも何箇所かあります)

void usb_phid_ControlGetReport1( USB_UTR_t *ptr )
{
    /* Check Setup packet Request Index and Request Value */
    if ( ( usb_gphid_Request.ReqIndex == usb_phid_get_interface_number() ) && ( (usb_gphid_Request.ReqValue & USB_DT_INDEX) == 0 ) )
    {

。。。以後省略。。。

void R_usb_pmsc_ControlTrans1(USB_UTR_t *ptr, USB_REQUEST_t *req)
{
    if( (req->ReqIndex == usb_pmsc_get_interface_number()) && (req->ReqTypeRecip == USB_INTERFACE) )
    {

。。。以後省略。。。

void usb_pcdc_ControlTrans1(USB_UTR_t *ptr, USB_REQUEST_t *req)
{
    /* Is a request receive target Interface? */
    if( (req->ReqIndex == usb_pcdc_get_interface_number()) && (req->ReqTypeRecip == USB_INTERFACE) )
    {

。。。以後省略。。。

関連記事

2013/07/28   blog-entry-315   category: RX /* 32bit CISC */

go page top