<?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>topic Re: How to close virtual com? in MQX Software Solutions</title>
    <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212460#M5303</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;After that I can do USB_Class_CDC_Deinit without errors.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But there is a  new problem that I can not reopen vcom.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Though reopen vcom got no error, but PC side shows the USB device is not&lt;/P&gt;&lt;P&gt;available.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For now I don't try to deinit USB cdc device.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I just make a software flag to indicate vcom staste for up layer api.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 04 Jan 2013 09:40:08 GMT</pubDate>
    <dc:creator>monroe</dc:creator>
    <dc:date>2013-01-04T09:40:08Z</dc:date>
    <item>
      <title>How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212447#M5290</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I use the virtual com to receive data from PC, and it works normal.&lt;/P&gt;&lt;P&gt;After finish receive data I want to disconnect and close virtual com.&lt;/P&gt;&lt;P&gt;I try call &lt;STRONG&gt;USB_Class_CDC_Deinit&lt;/STRONG&gt;(g_app_handle) to finish the receive job.&lt;/P&gt;&lt;P&gt;Then I got a task error "&lt;STRONG&gt;mqx_not_resource_owner&lt;/STRONG&gt;" on doing "&lt;STRONG&gt;_usb_device_deinit&lt;/STRONG&gt;".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;my flow is -&lt;/P&gt;&lt;P&gt;1. Init virtual com.&lt;/P&gt;&lt;P&gt;2. Receive data from PC.&lt;/P&gt;&lt;P&gt;3. call &lt;STRONG&gt;USB_Class_CDC_Deinit&lt;/STRONG&gt; to disconnect with PC.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I try call &lt;STRONG&gt;USB_Class_CDC_Deinit&lt;/STRONG&gt; on &lt;STRONG&gt;callback&lt;/STRONG&gt; function.&lt;/P&gt;&lt;P&gt;It works normal.&lt;/P&gt;&lt;P&gt;but this not meet my requirement.&lt;/P&gt;&lt;P&gt;Is there something wrong with me?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Dec 2012 03:03:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212447#M5290</guid>
      <dc:creator>monroe</dc:creator>
      <dc:date>2012-12-19T03:03:57Z</dc:date>
    </item>
    <item>
      <title>Re: How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212448#M5291</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, the task that initialized CDC class instance should also deinitialize it.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 31 Dec 2012 13:43:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212448#M5291</guid>
      <dc:creator>JuroV</dc:creator>
      <dc:date>2012-12-31T13:43:10Z</dc:date>
    </item>
    <item>
      <title>Re: How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212449#M5292</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you for reply.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I do USB_Class_CDC_Init and USB_Class_CDC_Deinit in the same task.&lt;/P&gt;&lt;P&gt;But only on callback function USB_Class_CDC_Deinit can working normal.&lt;/P&gt;&lt;P&gt;I think even I do USB_Class_CDC_Init on task A, the usb device resource owner is system but not task A.&lt;/P&gt;&lt;P&gt;So Task A can not &lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;deinitialize the &lt;/SPAN&gt;usb resource.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Since there is no example code for close vcom, I don't know what is wrong with my procedure.&lt;/P&gt;&lt;P&gt;My project is K60, and I had tried MQX 3.8 and 4.0.&lt;/P&gt;&lt;P&gt;They both have the same problem.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 02 Jan 2013 02:06:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212449#M5292</guid>
      <dc:creator>monroe</dc:creator>
      <dc:date>2013-01-02T02:06:10Z</dc:date>
    </item>
    <item>
      <title>Re: How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212450#M5293</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi monroe,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tried to call USB_Class_CDC_Deinit and it returns with USB_OK, there is no issue.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 02 Jan 2013 10:33:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212450#M5293</guid>
      <dc:creator>JuroV</dc:creator>
      <dc:date>2013-01-02T10:33:34Z</dc:date>
    </item>
    <item>
      <title>Re: How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212451#M5294</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Juraj,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you set MQX_CHECK_ERRORS to 1 in mqx_cnfg.h&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;===============&amp;nbsp; clip in function _lwmem_free(lwm_free.c)&amp;nbsp;&amp;nbsp; =====================&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#if MQX_CHECK_ERRORS&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; /* Verify the passed in parameter */&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; if (! ((block_ptr-&amp;gt;U.S.TASK_NUMBER == TASK_NUMBER_FROM_TASKID(kernel_data-&amp;gt;ACTIVE_PTR-&amp;gt;TASK_ID)) ||&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (block_ptr-&amp;gt;U.S.TASK_NUMBER == SYSTEM_TASK_NUMBER)))&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; {&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _task_set_error(MQX_NOT_RESOURCE_OWNER);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return(MQX_NOT_RESOURCE_OWNER);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; } /* Endif */&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#endif&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;===================================================================&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I always got this error, if I call &lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;USB_Class_CDC_Deinit&lt;/SPAN&gt; from task not from system callback.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Jan 2013 01:27:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212451#M5294</guid>
      <dc:creator>monroe</dc:creator>
      <dc:date>2013-01-03T01:27:32Z</dc:date>
    </item>
    <item>
      <title>Re: How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212452#M5295</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi monore,&lt;/P&gt;&lt;P&gt;yes, I have it set, but I have tried Mk70F, that could be a problem as there is another memory management set. I will try with MK60.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Jan 2013 08:52:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212452#M5295</guid>
      <dc:creator>JuroV</dc:creator>
      <dc:date>2013-01-03T08:52:08Z</dc:date>
    </item>
    <item>
      <title>Re: How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212453#M5296</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have now tried MQX 4.0 + twrk60n512 + virtual_com example with additional USB_Class_CDC_Deinit call. It works normally without the issue found.&lt;/P&gt;&lt;P&gt;Could you please paste here the call stack to see where your problem happened?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Jan 2013 09:15:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212453#M5296</guid>
      <dc:creator>JuroV</dc:creator>
      <dc:date>2013-01-03T09:15:54Z</dc:date>
    </item>
    <item>
      <title>Re: How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212454#M5297</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Juraj,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There is my flow:&lt;/P&gt;&lt;P&gt;====================================================&lt;/P&gt;&lt;P&gt;int vcom_test()&amp;nbsp; // virtual com test func&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ch = keypad_getchar();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ch == '1')&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; open_com(1, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ch == '2')&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; close_com(1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ch == '3')&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; write_com(1, buf);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ch == '9')&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; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (read_com(1, &amp;amp;c)) &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; printf("read %02x\n", c);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _time_delay(1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;====================================================&lt;/P&gt;&lt;P&gt;static int init_vcom()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CDC_CONFIG_STRUCT cdc_config;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (vcom_initd == TRUE)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (g_curr_recv_buf == NULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_curr_recv_buf = _mem_alloc_uncached(DATA_BUFF_SIZE);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (endPoint_ptr == NULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; endPoint_ptr = USB_mem_alloc_zero(sizeof(USB_CLASS_CDC_ENDPOINT) * CDC_DESC_ENDPOINT_COUNT);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.comm_feature_data_size = COMM_FEATURE_DATA_SIZE;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.usb_ep_data = &amp;amp;usb_desc_ep;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.desc_endpoint_cnt = CDC_DESC_ENDPOINT_COUNT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.cdc_class_cb.callback = usb_cdc_callback;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.cdc_class_cb.arg = &amp;amp;g_app_handle;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.vendor_req_callback.callback = NULL;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.vendor_req_callback.arg = NULL;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.param_callback.callback = usb_para_callback;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.param_callback.arg = &amp;amp;g_app_handle;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.desc_callback_ptr = &amp;amp;desc_callback;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.ep = endPoint_ptr;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.cic_send_endpoint = CIC_NOTIF_ENDPOINT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Always happend in control endpoint hence hard coded in Class layer*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.dic_send_endpoint = DIC_BULK_IN_ENDPOINT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdc_config.dic_recv_endpoint = DIC_BULK_OUT_ENDPOINT;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (MQX_OK != _usb_device_driver_install(USBCFG_DEFAULT_DEVICE_CONTROLLER)) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize the USB interface */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_app_handle = USB_Class_CDC_Init(&amp;amp;cdc_config);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag_vcom_status = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vcom_initd = TRUE;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;====================================================&lt;/P&gt;&lt;P&gt;int open_vcom()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (vcom_initd == FALSE) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return init_vcom();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (flag_vcom_status == 0) {&lt;/P&gt;&lt;P&gt;&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; flag_vcom_status = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 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; return 1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;====================================================&lt;/P&gt;&lt;P&gt;int close_vcom()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_Class_CDC_Deinit(g_app_handle);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;====================================================&lt;/P&gt;&lt;P&gt;int read_vcom(char *c)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if (g_recv_size &amp;gt; 0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *c = get_ring_buf();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; } else {&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; printf("Buffer is empty\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;====================================================&lt;/P&gt;&lt;P&gt;int write_vcom(const char *s)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int size = strlen(s);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((start_app == TRUE) &amp;amp;&amp;amp; (start_transactions == TRUE)) { // non block write&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint_8 error;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error = USB_Class_CDC_Send_Data(g_app_handle, DIC_BULK_IN_ENDPOINT, (uint_8_ptr)s, (uint_32)size);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (error == USB_OK) {&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; return size;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else { /* Failure to send Data Handling code here */&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; } else { // USB not ready&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Jan 2013 09:36:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212454#M5297</guid>
      <dc:creator>monroe</dc:creator>
      <dc:date>2013-01-03T09:36:35Z</dc:date>
    </item>
    <item>
      <title>Re: How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212455#M5298</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello monroe,&lt;/P&gt;&lt;P&gt;I meant if you could type here the program flow since call of &lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;USB_Class_CDC_Deinit&lt;/SPAN&gt; until _task_set_error(MQX_NOT_RESOURCE_OWNER) happens- what is called and where.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Jan 2013 09:40:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212455#M5298</guid>
      <dc:creator>JuroV</dc:creator>
      <dc:date>2013-01-03T09:40:32Z</dc:date>
    </item>
    <item>
      <title>Re: How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212456#M5299</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Juraj,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is this what you need?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;USB_Class_CDC_Deinit&amp;nbsp;&amp;nbsp;&amp;nbsp; .....(usb_cdc.c)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _usb_device_deinit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ......(dev_main.c)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _usb_device_shutdown&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .....(dev_shut.c)&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; USB_mem_free((pointer)usb_dev_ptr-&amp;gt;SERVICE_HEAD_PTR) ==&amp;gt;(as _lwmem_free)&amp;nbsp;&amp;nbsp; .....(lwm_free.c)&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Jan 2013 10:10:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212456#M5299</guid>
      <dc:creator>monroe</dc:creator>
      <dc:date>2013-01-03T10:10:09Z</dc:date>
    </item>
    <item>
      <title>Re: How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212457#M5300</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, thank you.&lt;/P&gt;&lt;P&gt;What happens if you remove the lines from khci_dev_main.c:2184 - 2196:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Free all the Callback function structure memory */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_mem_free((pointer)state_ptr-&amp;gt;SERVICE_HEAD_PTR);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Free all internal transfer descriptors */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_mem_free((pointer)state_ptr-&amp;gt;XD_BASE);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Free all XD scratch memory */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_mem_free((pointer)state_ptr-&amp;gt;XD_SCRATCH_STRUCT_BASE);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Free the temp ep init XD */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_mem_free((pointer)state_ptr-&amp;gt;TEMP_XD_PTR);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Free the USB state structure */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_mem_free((pointer)state_ptr);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and then rebuild USB DDK?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Jan 2013 10:20:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212457#M5300</guid>
      <dc:creator>JuroV</dc:creator>
      <dc:date>2013-01-03T10:20:43Z</dc:date>
    </item>
    <item>
      <title>Re: How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212458#M5301</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have same error on doing "USB_mem_free((void*)(handle))" after &lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;_usb_device_shutdown.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;uint_8 _usb_device_deinit(_usb_device_handle&amp;nbsp; handle)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; USB_DEV_STATE_STRUCT_PTR usb_dev_ptr;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; uint_8 error;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; error = _usb_device_shutdown(handle);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;STRONG&gt; USB_mem_free((void*)(handle));&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return error;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;USB_STATUS _usb_device_shutdown(_usb_device_handle handle)&lt;/P&gt;&lt;P&gt;{ &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_STATUS error;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; volatile USB_DEV_STATE_STRUCT_PTR usb_dev_ptr;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;usb_dev_ptr = (USB_DEV_STATE_STRUCT_PTR)handle;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Free the USB state structure */&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;USB_mem_free((pointer)usb_dev_ptr); &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&amp;nbsp; error;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;} &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There seems a problem on free memory.&lt;/P&gt;&lt;P&gt;The handle was already free in "_usb_device_shutdown".&lt;/P&gt;&lt;P&gt;After that, on _usb_device_deinit, it try to free handle again.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Jan 2013 10:46:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212458#M5301</guid>
      <dc:creator>monroe</dc:creator>
      <dc:date>2013-01-03T10:46:54Z</dc:date>
    </item>
    <item>
      <title>Re: How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212459#M5302</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you for pointing to that again. In the shutdown, it should be removed. But what is the state after that?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 Jan 2013 09:14:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212459#M5302</guid>
      <dc:creator>JuroV</dc:creator>
      <dc:date>2013-01-04T09:14:27Z</dc:date>
    </item>
    <item>
      <title>Re: How to close virtual com?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212460#M5303</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;After that I can do USB_Class_CDC_Deinit without errors.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But there is a  new problem that I can not reopen vcom.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Though reopen vcom got no error, but PC side shows the USB device is not&lt;/P&gt;&lt;P&gt;available.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For now I don't try to deinit USB cdc device.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I just make a software flag to indicate vcom staste for up layer api.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 Jan 2013 09:40:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/How-to-close-virtual-com/m-p/212460#M5303</guid>
      <dc:creator>monroe</dc:creator>
      <dc:date>2013-01-04T09:40:08Z</dc:date>
    </item>
  </channel>
</rss>

