Microchip® Advanced Software Framework

udi_phdc.c File Reference

USB Device Personal Healthcare Device Class (PHDC) interface.

Copyright (c) 2009-2018 Microchip Technology Inc. and its subsidiaries.

#include "conf_usb.h"
#include "usb_protocol.h"
#include "usb_protocol_phdc.h"
#include "udd.h"
#include "udc.h"
#include "udi_phdc.h"
#include <string.h>

Functions

void udi_phdc_disable (void)
 
bool udi_phdc_enable (void)
 
uint8_t udi_phdc_getsetting (void)
 
bool udi_phdc_senddata (udi_phdc_metadata_t *metadata, void(*callback)(uint16_t))
 Send metadata to USB host. More...
 
void udi_phdc_senddata_abort (void)
 Abort of send metadata to USB host. More...
 
bool udi_phdc_setup (void)
 
bool udi_phdc_waitdata (udi_phdc_metadata_t *metadata, void(*callback)(bool, uint16_t))
 Wait metadata from USB host. More...
 
Internal routines
static bool udi_phdc_send_preamplemsg (void)
 This function sends a preample message. More...
 
static void udi_phdc_preamplemsg_ack (udd_ep_status_t status, iram_size_t nb_send, udd_ep_id_t ep)
 Callback called when preample message is sent. More...
 
static bool udi_phdc_send_metadata (void)
 This function sends a metadata. More...
 
static void udi_phdc_metadata_ack (udd_ep_status_t status, iram_size_t nb_send, udd_ep_id_t ep)
 Callback called when metadata is sent. More...
 
static bool udi_phdc_wait_preamplemsg (void)
 This function requests a preample message. More...
 
static void udi_phdc_received_preample (udd_ep_status_t status, iram_size_t nb_received, udd_ep_id_t ep)
 Callback called when metadata is received. More...
 
static bool udi_phdc_wait_metadata (uint8_t bNumTransfers)
 This function request metadata. More...
 
static void udi_phdc_received_metadata (udd_ep_status_t status, iram_size_t nb_received, udd_ep_id_t ep)
 Callback called when metadata is received. More...
 
static void udi_phdc_abort_all_transfers_ongoing (void)
 Aborts all PHDC transfers on-going or pending. More...
 

Variables

UDC_DESC_STORAGE udi_api_t udi_api_phdc
 
Internal variables to manage PHDC
static COMPILER_WORD_ALIGNED le16_t udi_phdc_holding_data
 
static uint8_t udi_phdc_preample_feature
 
struct {
   bool   b_preample_run
 
   bool   b_run
 
   void(*   callback )(uint16_t)
 
   void *   cntx
 
   udi_phdc_metadata_t *   metadata
 
   uint16_t   metadata_pos
 
   usb_phdc_metadata_msg_t   preample_header
 
   uint8_t   preample_opaque_data [UDI_PHDC_EP_SIZE_BULK_IN-sizeof(usb_phdc_metadata_msg_t)]
 
udi_phdc_in_trans
 
struct {
   bool   b_preample_run
 
   bool   b_run
 
   void(*   callback )(bool, uint16_t)
 
   void *   cntx
 
   udi_phdc_metadata_t *   metadata
 
   uint16_t   metadata_pos
 
   usb_phdc_metadata_msg_t   preample_header
 
   uint8_t   preample_opaque_data [UDI_PHDC_EP_SIZE_BULK_OUT-sizeof(usb_phdc_metadata_msg_t)]
 
udi_phdc_out_trans
 

bool b_preample_run
bool b_run
void(* callback)(bool, uint16_t)

Referenced by aes_set_callback(), afec_set_callback(), att_copy_value(), att_set_read_callback(), att_set_write_callback(), att_update_value_len(), gatt_client_cancel_write(), gatt_client_discover_characteristic_descriptors(), gatt_client_discover_characteristics_for_handle_range_by_uuid128(), gatt_client_discover_characteristics_for_handle_range_by_uuid16(), gatt_client_discover_characteristics_for_service(), gatt_client_discover_primary_services(), gatt_client_discover_primary_services_by_uuid128(), gatt_client_discover_primary_services_by_uuid16(), gatt_client_execute_write(), gatt_client_find_included_services_for_service(), gatt_client_prepare_write(), gatt_client_read_characteristic_descriptor_using_descriptor_handle(), gatt_client_read_long_characteristic_descriptor_using_descriptor_handle_with_offset(), gatt_client_read_long_value_of_characteristic_using_value_handle_with_offset(), gatt_client_read_multiple_characteristic_values(), gatt_client_read_value_of_characteristic_using_value_handle(), gatt_client_read_value_of_characteristics_by_uuid128(), gatt_client_read_value_of_characteristics_by_uuid16(), gatt_client_reliable_write_long_value_of_characteristic(), gatt_client_write_characteristic_descriptor_using_descriptor_handle(), gatt_client_write_client_characteristic_configuration(), gatt_client_write_long_characteristic_descriptor_using_descriptor_handle_with_offset(), gatt_client_write_long_value_of_characteristic_with_offset(), gatt_client_write_value_of_characteristic(), handle_prepare_write_request(), handle_write_command(), handle_write_request(), hids_device_register_packet_handler(), http_client_register_callback(), i2s_set_callback(), icm_set_callback(), l2cap_acl_classic_handler(), l2cap_acl_le_handler(), l2cap_notify_channel_can_send(), sw_timer_register_callback(), udi_msc_trans_block(), udi_phdc_senddata(), udi_phdc_waitdata(), uhc_enable_timeout_callback(), uhd_ep_run(), uhd_send_reset(), uhi_msc_reset_endpoint(), uhi_msc_scsi(), uhi_msc_scsi_inquiry(), uhi_msc_scsi_mode_sense6(), uhi_msc_scsi_read_10(), uhi_msc_scsi_read_capacity(), uhi_msc_scsi_request_sense(), uhi_msc_scsi_test_unit_ready(), and uhi_msc_scsi_write_10().

void* cntx
uint16_t metadata_pos
uint8_t preample_opaque_data[UDI_PHDC_EP_SIZE_BULK_OUT-sizeof(usb_phdc_metadata_msg_t)]