Skip to content

Commit

Permalink
Update on 18 Jan 2023. Expand to see details.
Browse files Browse the repository at this point in the history
4faab07a Remove internal deprecated files.
d82f44a2 Upgrade to the latest Container Images.
04527692 Checked device removal while reading/writing storage.
d7560786 Add a notice for not released file.
  • Loading branch information
xiaocq2001 committed Jan 18, 2023
1 parent 2c66db9 commit 7bafce8
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 5 deletions.
47 changes: 47 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,53 @@ See [Overview of Azure RTOS USBX](https://learn.microsoft.com/azure/rtos/usbx/ov

The master branch has the most recent code with all new features and bug fixes. It does not represent the latest General Availability (GA) release of the library. Each official release (preview or GA) will be tagged to mark the commit and push it into the Github releases tab, e.g. `v6.2-rel`.

> When you see xx-xx-xxxx, 6.x or x.x in function header, this means the file is not officially released yet. They will be updated in the next release. See example below.
```
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _tx_initialize_low_level Cortex-M23/GNU */
/* 6.x */
/* AUTHOR */
/* */
/* Scott Larson, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function is responsible for any low-level processor */
/* initialization, including setting up interrupt vectors, setting */
/* up a periodic timer interrupt source, saving the system stack */
/* pointer for use in ISR processing later, and finding the first */
/* available RAM memory address for tx_application_define. */
/* */
/* INPUT */
/* */
/* None */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* None */
/* */
/* CALLED BY */
/* */
/* _tx_initialize_kernel_enter ThreadX entry function */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* 09-30-2020 Scott Larson Initial Version 6.1 */
/* xx-xx-xxxx Scott Larson Include tx_user.h, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
```

## Component dependencies

The main components of Azure RTOS are each provided in their own repository, but there are dependencies between them, as shown in the following graph. This is important to understand when setting up your builds.
Expand Down
17 changes: 16 additions & 1 deletion common/usbx_host_classes/src/ux_host_class_storage_check_run.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_storage_check_run PORTABLE C */
/* 6.1.10 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
Expand Down Expand Up @@ -79,10 +79,14 @@
/* DATE NAME DESCRIPTION */
/* */
/* 01-31-2022 Chaoqiong Xiao Initial Version 6.1.10 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* checked device state, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_storage_check_run(UX_HOST_CLASS_STORAGE *storage)
{
UX_DEVICE *device;

#if defined UX_HOST_CLASS_STORAGE_STATE_CHECK_ENABLE
UX_INTERRUPT_SAVE_AREA
Expand All @@ -107,6 +111,9 @@ UX_INTERRUPT_SAVE_AREA
UX_RESTORE
#endif

/* Get device. */
device = storage -> ux_host_class_storage_device;

switch(storage -> ux_host_class_storage_op_state)
{
case UX_STATE_IDLE:
Expand All @@ -130,6 +137,14 @@ UX_INTERRUPT_SAVE_AREA
/* Run tasks, including transport task. */
_ux_system_host_tasks_run();

/* Check if device is still available. */
if (device -> ux_device_state != UX_DEVICE_CONFIGURED)
{

/* Instance should have been destroyed, just return. */
return(UX_STATE_EXIT);
}

/* In case state is not idle, check if it changes back. */
if (storage -> ux_host_class_storage_state_state == UX_STATE_IDLE)
{
Expand Down
17 changes: 16 additions & 1 deletion common/usbx_host_classes/src/ux_host_class_storage_lock.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_storage_lock PORTABLE C */
/* 6.1.10 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
Expand Down Expand Up @@ -71,12 +71,19 @@
/* DATE NAME DESCRIPTION */
/* */
/* 01-31-2022 Chaoqiong Xiao Initial Version 6.1.10 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* checked device state, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_storage_lock(UX_HOST_CLASS_STORAGE *storage, ULONG wait)
{
UX_INTERRUPT_SAVE_AREA
ULONG t0, t1;
UX_DEVICE *device;

/* Get device. */
device = storage -> ux_host_class_storage_device;

t0 = _ux_utility_time_get();
while(1)
Expand Down Expand Up @@ -129,6 +136,14 @@ ULONG t0, t1;

/* Run stack tasks. */
_ux_system_host_tasks_run();

/* Check if device is still available. */
if (device -> ux_device_state != UX_DEVICE_CONFIGURED)
{

/* Instance should have been destroyed, just return. */
return(UX_STATE_EXIT);
}
}

/* Lock storage. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ ULONG command_length;
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_storage_media_read PORTABLE C */
/* 6.1.10 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
Expand Down Expand Up @@ -123,6 +123,9 @@ ULONG command_length;
/* 01-31-2022 Chaoqiong Xiao Modified comment(s), */
/* added standalone support, */
/* resulting in version 6.1.10 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* checked device removal, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_storage_media_read(UX_HOST_CLASS_STORAGE *storage, ULONG sector_start,
Expand All @@ -134,6 +137,8 @@ UINT status;
status = _ux_host_class_storage_read_write_run(storage, UX_TRUE,
sector_start, sector_count, data_pointer);
} while(status == UX_STATE_WAIT);
if (status < UX_STATE_IDLE)
return(UX_HOST_CLASS_INSTANCE_UNKNOWN);
return(storage -> ux_host_class_storage_status);
#else
UINT status;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ ULONG command_length;
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_storage_media_write PORTABLE C */
/* 6.1.10 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
Expand Down Expand Up @@ -122,6 +122,9 @@ ULONG command_length;
/* 01-31-2022 Chaoqiong Xiao Modified comment(s), */
/* added standalone support, */
/* resulting in version 6.1.10 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* checked device removal, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_storage_media_write(UX_HOST_CLASS_STORAGE *storage, ULONG sector_start,
Expand All @@ -133,6 +136,8 @@ UINT status;
status = _ux_host_class_storage_read_write_run(storage, UX_FALSE,
sector_start, sector_count, data_pointer);
} while(status == UX_STATE_WAIT);
if (status < UX_STATE_IDLE)
return(UX_HOST_CLASS_INSTANCE_UNKNOWN);
return(storage -> ux_host_class_storage_status);
#else
UINT status;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ extern VOID _ux_host_class_storage_write_initialize(UX_HOST_CLASS_STORAGE *stora
/* FUNCTION RELEASE */
/* */
/* _ux_host_class_storage_read_write_run PORTABLE C */
/* 6.1.10 */
/* 6.x */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
Expand Down Expand Up @@ -93,13 +93,18 @@ extern VOID _ux_host_class_storage_write_initialize(UX_HOST_CLASS_STORAGE *stora
/* DATE NAME DESCRIPTION */
/* */
/* 01-31-2022 Chaoqiong Xiao Initial Version 6.1.10 */
/* xx-xx-xxxx Chaoqiong Xiao Modified comment(s), */
/* checked device state, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
UINT _ux_host_class_storage_read_write_run(UX_HOST_CLASS_STORAGE *storage,
ULONG read_write,
ULONG sector_start, ULONG sector_count, UCHAR *data_pointer)
{

UX_DEVICE *device;

#if defined UX_HOST_CLASS_STORAGE_STATE_CHECK_ENABLE
UX_INTERRUPT_SAVE_AREA

Expand All @@ -125,6 +130,9 @@ UX_INTERRUPT_SAVE_AREA
/* If trace is enabled, insert this event into the trace buffer. */
UX_TRACE_IN_LINE_INSERT(UX_TRACE_HOST_CLASS_STORAGE_MEDIA_READ, storage, sector_start, sector_count, data_pointer, UX_TRACE_HOST_CLASS_EVENTS, 0, 0)

/* Get device. */
device = storage -> ux_host_class_storage_device;

switch(storage -> ux_host_class_storage_op_state)
{
case UX_STATE_IDLE: /* Fall through. */
Expand All @@ -150,6 +158,14 @@ UX_INTERRUPT_SAVE_AREA
/* Run tasks, including transport task. */
_ux_system_host_tasks_run();

/* Check if device is still available. */
if (device -> ux_device_state != UX_DEVICE_CONFIGURED)
{

/* Instance should have been destroyed, just return. */
return(UX_STATE_EXIT);
}

/* Fatal error. */
if (storage -> ux_host_class_storage_op_state < UX_STATE_IDLE)
return(UX_STATE_EXIT);
Expand Down

0 comments on commit 7bafce8

Please sign in to comment.