<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Kinetis Software Development KitのトピックUsing multiple transmit mailboxes with the KSDK FlexCAN Driver</title>
    <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Using-multiple-transmit-mailboxes-with-the-KSDK-FlexCAN-Driver/m-p/488180#M4334</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am writing something that requires a high throughput for CAN transmission.&lt;/P&gt;&lt;P&gt;Looking at the FlexCAN module in the k66 datasheet, there is an elegant system where you can fill the TX Mailboxes with messages and the underlying system handles the transmission&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Attempting to use the KSDK flexCAN drivers in this way does Not seem to work though.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Does the KSDK FlexCAN driver use only one TX Mailbox at a time?&lt;/P&gt;&lt;P&gt;Is there a simple way to make KSDK handle multiple TX mailboxes?&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Zander&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 13 Jan 2016 22:08:53 GMT</pubDate>
    <dc:creator>zandererasmus</dc:creator>
    <dc:date>2016-01-13T22:08:53Z</dc:date>
    <item>
      <title>Using multiple transmit mailboxes with the KSDK FlexCAN Driver</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Using-multiple-transmit-mailboxes-with-the-KSDK-FlexCAN-Driver/m-p/488180#M4334</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am writing something that requires a high throughput for CAN transmission.&lt;/P&gt;&lt;P&gt;Looking at the FlexCAN module in the k66 datasheet, there is an elegant system where you can fill the TX Mailboxes with messages and the underlying system handles the transmission&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Attempting to use the KSDK flexCAN drivers in this way does Not seem to work though.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Does the KSDK FlexCAN driver use only one TX Mailbox at a time?&lt;/P&gt;&lt;P&gt;Is there a simple way to make KSDK handle multiple TX mailboxes?&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Zander&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jan 2016 22:08:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Using-multiple-transmit-mailboxes-with-the-KSDK-FlexCAN-Driver/m-p/488180#M4334</guid>
      <dc:creator>zandererasmus</dc:creator>
      <dc:date>2016-01-13T22:08:53Z</dc:date>
    </item>
    <item>
      <title>Re: Using multiple transmit mailboxes with the KSDK FlexCAN Driver</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Using-multiple-transmit-mailboxes-with-the-KSDK-FlexCAN-Driver/m-p/488181#M4335</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Zander,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From hardware perspective, FlexCan supports multiple transmit mailbox to transfer data. in SDK tools, it also supports multiple transmit mailbox to transfer data.&lt;/P&gt;&lt;P&gt;This is the snippet to support multiple transmit mailbox:&lt;/P&gt;&lt;P&gt;&amp;nbsp; flexcan_state_t can_state;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; flexcan_user_config_t flexcan1_data;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t TX_identifier0,TX_identifier1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t RX_identifier;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t TX_mailbox_num0,TX_mailbox_num1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t RX_mailbox_num;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FLEXCAN_DRV_Init(flexcanInstance, &amp;amp;can_state, &amp;amp;flexcan1_data);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;.......................................................................................................................&lt;/P&gt;&lt;P&gt;//transmit data via mailbox0&lt;/P&gt;&lt;P&gt;//assign the tx_info, TX_identifier for mailbox0&lt;/P&gt;&lt;P&gt; FLEXCAN_DRV_ConfigTxMb(flexcanInstance, TX_mailbox_num0, &amp;amp;tx_info, TX_identifier0);&lt;/P&gt;&lt;P&gt;FLEXCAN_DRV_SendBlocking(flexcanInstance, TX_mailbox_num0, &amp;amp;tx_info, TX_identifier0,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ch == ch1) ? ch0 : ch1, 1000);&lt;/P&gt;&lt;P&gt;...........................................................................................................................&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;...........................................................................................................................&lt;/P&gt;&lt;P&gt;//transmit data via mailbox1&lt;/P&gt;&lt;P&gt;//assign the tx_info, TX_identifier for mailbox1&lt;/P&gt;&lt;P&gt; FLEXCAN_DRV_ConfigTxMb(flexcanInstance, TX_mailbox_num1, &amp;amp;tx_info, TX_identifier1);&lt;/P&gt;&lt;P&gt;FLEXCAN_DRV_SendBlocking(flexcanInstance, TX_mailbox_num1, &amp;amp;tx_info, TX_identifier1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ch == ch1) ? ch0 : ch1, 1000);&lt;/P&gt;&lt;P&gt;...................................................................................................................................&lt;/P&gt;&lt;P&gt;Hope it can help you&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Xiangjun Rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jan 2016 03:25:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Using-multiple-transmit-mailboxes-with-the-KSDK-FlexCAN-Driver/m-p/488181#M4335</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2016-01-14T03:25:42Z</dc:date>
    </item>
    <item>
      <title>Re: Using multiple transmit mailboxes with the KSDK FlexCAN Driver</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Using-multiple-transmit-mailboxes-with-the-KSDK-FlexCAN-Driver/m-p/488182#M4336</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The goal is to improve throughput by writing data to mailboxes During transmission.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So the desired pseudo code would look like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;while ( tx_messages in queue )&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mailbox is busy) then break&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pop tx_message&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write to mailbox&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (++mailbox) % 8&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;task_sleep&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I had thought that changing the active mailbox during transmission would break the driver (since the driver IRQ handler uses the mb_idx when checking flags for TX)&lt;/P&gt;&lt;P&gt;The issue is the "isTxBusy" part of the state, which only changes to False when the interrupt triggers&lt;/P&gt;&lt;P&gt;Only "tx_mb_idx" flag is checked in the interrupt &lt;/P&gt;&lt;P&gt;I will try tomorrow and see what happens&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jan 2016 04:05:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Using-multiple-transmit-mailboxes-with-the-KSDK-FlexCAN-Driver/m-p/488182#M4336</guid>
      <dc:creator>zandererasmus</dc:creator>
      <dc:date>2016-01-14T04:05:13Z</dc:date>
    </item>
    <item>
      <title>Re: Using multiple transmit mailboxes with the KSDK FlexCAN Driver</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Using-multiple-transmit-mailboxes-with-the-KSDK-FlexCAN-Driver/m-p/488183#M4337</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;To use the TX mailboxes like a TX FIFO in KSDK 1.3, you need to override the default behaviour of the drivers.&lt;/P&gt;&lt;P&gt;It would be better to write your own TX drivers but here's how to do it if you are not inclined to do that.&lt;/P&gt;&lt;P&gt;This example is written in MQX but it's probably relatively easy to do the same thing in baremetal.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The IRQ Handler:&lt;/P&gt;&lt;P&gt;You need to now service your own flags for the mailboxes (since the TxDone flag only works with a single active mailbox)&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14537426569591809 jive_text_macro" data-renderedposition="134_8_1232_416" jivemacro_uid="_14537426569591809" modifiedtitle="true"&gt;&lt;P&gt;void MQX_CAN0_ORed_Message_buffer_IRQHandler(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 9pt; line-height: 12pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; volatile uint32_t flag_reg;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t temp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Get the interrupts that are enabled and ready */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag_reg = ((FLEXCAN_HAL_GetAllMsgBuffIntStatusFlag(CAN0_BASE_PTR)) &amp;amp; CAN_IMASK1_BUFLM_MASK) &amp;amp; CAN_RD_IMASK1(CAN0_BASE_PTR);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for&amp;nbsp; (uint32_t i = MB_OFFSET_TX ; i &amp;lt; ( MB_OFFSET_TX + NUMBER_OF_TX_MB ) ; i++ )&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp = (1 &amp;lt;&amp;lt; i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (flag_reg &amp;amp; temp)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Complete transmit data */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mailbox_flags[0] &amp;amp;= ~temp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable the transmitter data register empty interrupt */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_HAL_SetMsgBuffIntCmd(CAN0_BASE_PTR, i, false);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable error interrupts */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_HAL_SetErrIntCmd(CAN0_BASE_PTR,kFlexCanIntErr,false);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_HAL_ClearMsgBuffIntStatusFlag(CAN0_BASE_PTR, temp &amp;amp; flag_reg);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Get the interrupts that are enabled and ready */&lt;/P&gt;&lt;P&gt;&amp;nbsp; FLEXCAN_DRV_IRQHandler(0);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Transmitting a message:&lt;/P&gt;&lt;P&gt;Create a ring buffer of the flags and set the mailbox flag of the mailbox you are transmitting to&lt;/P&gt;&lt;P&gt;We are popping messages off of a message queue in a task, but the important stuff is between the _int_disable and enable&lt;/P&gt;&lt;P&gt;You can see that I am overriding the isTxBusy flag, this is so that the FLEXCAN_DRV_Send doesn't ignore the message&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_1453743136969498 jive_text_macro" data-renderedposition="676_8_1232_432" jivemacro_uid="_1453743136969498"&gt;&lt;P&gt;void can_send ( uint8_t chnl&amp;nbsp; )&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // calculate which mb to use&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t mb_to_send = (flexcan_mb_counter[chnl])+MB_OFFSET_TX;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if ( mailbox_flags[chnl] &amp;amp; ( 1 &amp;lt;&amp;lt; mb_to_send ) )&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // _time_delay_ticks(1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( _msgq_get_count( can_channels[chnl].txq ) == 0 )&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // get flexcan message from private queue&lt;/P&gt;&lt;P&gt;&amp;nbsp; can_dequeue_tx(chnl, &amp;amp;tx_frame[chnl]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // tx info has two parameters, data length and frame size (std vs ext), this sets datalen&lt;/P&gt;&lt;P&gt;&amp;nbsp; tx_info.data_length = (tx_frame[chnl].cs &amp;gt;&amp;gt; 16) &amp;amp; 0xF;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // send the can message on the hardware&lt;/P&gt;&lt;P&gt;&amp;nbsp; _int_disable();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; FLEXCAN_DRV_ConfigTxMb(chnl, mb_to_send, &amp;amp;tx_info, tx_frame[chnl].msgId);&lt;/P&gt;&lt;P&gt;&amp;nbsp; can_channel_state[chnl].isTxBusy = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; mailbox_flags[chnl] |= ( 1 &amp;lt;&amp;lt; mb_to_send );&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; FLEXCAN_DRV_Send(chnl, mb_to_send, &amp;amp;tx_info, tx_frame[chnl].msgId, tx_frame[chnl].data);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; _int_enable();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // update the mb counter&lt;/P&gt;&lt;P&gt;&amp;nbsp; flexcan_mb_counter[chnl] = (++flexcan_mb_counter[chnl])%NUMBER_OF_TX_MB;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Jan 2016 17:24:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Using-multiple-transmit-mailboxes-with-the-KSDK-FlexCAN-Driver/m-p/488183#M4337</guid>
      <dc:creator>zandererasmus</dc:creator>
      <dc:date>2016-01-25T17:24:40Z</dc:date>
    </item>
  </channel>
</rss>

