22
22
#include " USBDescriptor.h"
23
23
#include " usb_phy_api.h"
24
24
#include " mbed_assert.h"
25
+ #include " platform/mbed_error.h"
25
26
26
27
// #define DEBUG
27
28
@@ -852,8 +853,17 @@ void USBDevice::ep0_setup()
852
853
assert_locked ();
853
854
854
855
if (_device.state < Default) {
855
- MBED_ASSERT (0 );
856
+ #if MBED_TRAP_ERRORS_ENABLED
857
+ MBED_ERROR (
858
+ MBED_MAKE_ERROR (
859
+ MBED_MODULE_DRIVER_USB,
860
+ MBED_ERROR_CODE_NOT_READY
861
+ ),
862
+ " Device state is \" Powered\" or \" Detached\" "
863
+ );
864
+ #else
856
865
return ;
866
+ #endif // MBED_TRAP_ERRORS_ENABLED
857
867
}
858
868
859
869
_setup_ready = true ;
@@ -874,15 +884,33 @@ void USBDevice::ep0_out()
874
884
assert_locked ();
875
885
876
886
if (_device.state < Default) {
877
- MBED_ASSERT (0 );
887
+ #if MBED_TRAP_ERRORS_ENABLED
888
+ MBED_ERROR (
889
+ MBED_MAKE_ERROR (
890
+ MBED_MODULE_DRIVER_USB,
891
+ MBED_ERROR_CODE_NOT_READY
892
+ ),
893
+ " Device state is \" Powered\" or \" Detached\" "
894
+ );
895
+ #else
878
896
return ;
897
+ #endif // MBED_TRAP_ERRORS_ENABLED
879
898
}
880
899
881
900
if (_transfer.user_callback != None) {
882
901
/* EP0 OUT should not receive data if the stack is waiting
883
902
on a user callback for the buffer to fill or status */
884
- MBED_ASSERT (0 );
903
+ #if MBED_TRAP_ERRORS_ENABLED
904
+ MBED_ERROR (
905
+ MBED_MAKE_ERROR (
906
+ MBED_MODULE_DRIVER_USB,
907
+ MBED_ERROR_CODE_NOT_READY
908
+ ),
909
+ " The stack is waiting on a user callback for the buffer to fill or status."
910
+ );
911
+ #else
885
912
return ;
913
+ #endif // MBED_TRAP_ERRORS_ENABLED
886
914
}
887
915
888
916
if (_transfer.stage == Status) {
@@ -903,8 +931,17 @@ void USBDevice::ep0_in()
903
931
assert_locked ();
904
932
905
933
if (_device.state < Default) {
906
- MBED_ASSERT (0 );
934
+ #if MBED_TRAP_ERRORS_ENABLED
935
+ MBED_ERROR (
936
+ MBED_MAKE_ERROR (
937
+ MBED_MODULE_DRIVER_USB,
938
+ MBED_ERROR_CODE_NOT_READY
939
+ ),
940
+ " Device state is \" Powered\" or \" Detached\" "
941
+ );
942
+ #else
907
943
return ;
944
+ #endif // MBED_TRAP_ERRORS_ENABLED
908
945
}
909
946
910
947
#ifdef DEBUG
@@ -928,8 +965,17 @@ void USBDevice::out(usb_ep_t endpoint)
928
965
assert_locked ();
929
966
930
967
if (!EP_INDEXABLE (endpoint)) {
931
- MBED_ASSERT (0 );
968
+ #if MBED_TRAP_ERRORS_ENABLED
969
+ MBED_ERROR (
970
+ MBED_MAKE_ERROR (
971
+ MBED_MODULE_DRIVER_USB,
972
+ MBED_ERROR_CODE_INVALID_INDEX
973
+ ),
974
+ " The endpoint is not indexable."
975
+ );
976
+ #else
932
977
return ;
978
+ #endif // MBED_TRAP_ERRORS_ENABLED
933
979
}
934
980
935
981
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
@@ -946,8 +992,17 @@ void USBDevice::in(usb_ep_t endpoint)
946
992
assert_locked ();
947
993
948
994
if (!EP_INDEXABLE (endpoint)) {
949
- MBED_ASSERT (0 );
995
+ #if MBED_TRAP_ERRORS_ENABLED
996
+ MBED_ERROR (
997
+ MBED_MAKE_ERROR (
998
+ MBED_MODULE_DRIVER_USB,
999
+ MBED_ERROR_CODE_INVALID_INDEX
1000
+ ),
1001
+ " The endpoint is not indexable."
1002
+ );
1003
+ #else
950
1004
return ;
1005
+ #endif // MBED_TRAP_ERRORS_ENABLED
951
1006
}
952
1007
953
1008
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
@@ -1056,9 +1111,18 @@ bool USBDevice::endpoint_add(usb_ep_t endpoint, uint32_t max_packet_size, usb_ep
1056
1111
lock ();
1057
1112
1058
1113
if (!EP_INDEXABLE (endpoint)) {
1059
- MBED_ASSERT (0 );
1114
+ #if MBED_TRAP_ERRORS_ENABLED
1115
+ MBED_ERROR (
1116
+ MBED_MAKE_ERROR (
1117
+ MBED_MODULE_DRIVER_USB,
1118
+ MBED_ERROR_CODE_INVALID_INDEX
1119
+ ),
1120
+ " The endpoint is not indexable."
1121
+ );
1122
+ #else
1060
1123
unlock ();
1061
1124
return false ;
1125
+ #endif // MBED_TRAP_ERRORS_ENABLED
1062
1126
}
1063
1127
1064
1128
if (!_endpoint_add_remove_allowed) {
@@ -1087,9 +1151,18 @@ void USBDevice::endpoint_remove(usb_ep_t endpoint)
1087
1151
lock ();
1088
1152
1089
1153
if (!EP_INDEXABLE (endpoint)) {
1090
- MBED_ASSERT (0 );
1154
+ #if MBED_TRAP_ERRORS_ENABLED
1155
+ MBED_ERROR (
1156
+ MBED_MAKE_ERROR (
1157
+ MBED_MODULE_DRIVER_USB,
1158
+ MBED_ERROR_CODE_INVALID_INDEX
1159
+ ),
1160
+ " The endpoint is not indexable."
1161
+ );
1162
+ #else
1091
1163
unlock ();
1092
1164
return ;
1165
+ #endif // MBED_TRAP_ERRORS_ENABLED
1093
1166
}
1094
1167
1095
1168
if (!_endpoint_add_remove_allowed) {
@@ -1133,9 +1206,18 @@ void USBDevice::endpoint_stall(usb_ep_t endpoint)
1133
1206
lock ();
1134
1207
1135
1208
if (!EP_INDEXABLE (endpoint)) {
1136
- MBED_ASSERT (0 );
1209
+ #if MBED_TRAP_ERRORS_ENABLED
1210
+ MBED_ERROR (
1211
+ MBED_MAKE_ERROR (
1212
+ MBED_MODULE_DRIVER_USB,
1213
+ MBED_ERROR_CODE_INVALID_INDEX
1214
+ ),
1215
+ " The endpoint is not indexable."
1216
+ );
1217
+ #else
1137
1218
unlock ();
1138
1219
return ;
1220
+ #endif // MBED_TRAP_ERRORS_ENABLED
1139
1221
}
1140
1222
1141
1223
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
@@ -1161,9 +1243,18 @@ void USBDevice::endpoint_unstall(usb_ep_t endpoint)
1161
1243
lock ();
1162
1244
1163
1245
if (!EP_INDEXABLE (endpoint)) {
1164
- MBED_ASSERT (0 );
1246
+ #if MBED_TRAP_ERRORS_ENABLED
1247
+ MBED_ERROR (
1248
+ MBED_MAKE_ERROR (
1249
+ MBED_MODULE_DRIVER_USB,
1250
+ MBED_ERROR_CODE_INVALID_INDEX
1251
+ ),
1252
+ " The endpoint is not indexable."
1253
+ );
1254
+ #else
1165
1255
unlock ();
1166
1256
return ;
1257
+ #endif // MBED_TRAP_ERRORS_ENABLED
1167
1258
}
1168
1259
1169
1260
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
@@ -1307,9 +1398,18 @@ void USBDevice::endpoint_abort(usb_ep_t endpoint)
1307
1398
lock ();
1308
1399
1309
1400
if (!EP_INDEXABLE (endpoint)) {
1310
- MBED_ASSERT (0 );
1401
+ #if MBED_TRAP_ERRORS_ENABLED
1402
+ MBED_ERROR (
1403
+ MBED_MAKE_ERROR (
1404
+ MBED_MODULE_DRIVER_USB,
1405
+ MBED_ERROR_CODE_INVALID_INDEX
1406
+ ),
1407
+ " The endpoint is not indexable."
1408
+ );
1409
+ #else
1311
1410
unlock ();
1312
1411
return ;
1412
+ #endif // MBED_TRAP_ERRORS_ENABLED
1313
1413
}
1314
1414
1315
1415
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
@@ -1333,9 +1433,18 @@ bool USBDevice::read_start(usb_ep_t endpoint, uint8_t *buffer, uint32_t max_size
1333
1433
lock ();
1334
1434
1335
1435
if (!EP_INDEXABLE (endpoint)) {
1336
- MBED_ASSERT (0 );
1436
+ #if MBED_TRAP_ERRORS_ENABLED
1437
+ MBED_ERROR (
1438
+ MBED_MAKE_ERROR (
1439
+ MBED_MODULE_DRIVER_USB,
1440
+ MBED_ERROR_CODE_INVALID_INDEX
1441
+ ),
1442
+ " The endpoint is not indexable."
1443
+ );
1444
+ #else
1337
1445
unlock ();
1338
1446
return false ;
1447
+ #endif // MBED_TRAP_ERRORS_ENABLED
1339
1448
}
1340
1449
1341
1450
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
@@ -1347,9 +1456,18 @@ bool USBDevice::read_start(usb_ep_t endpoint, uint8_t *buffer, uint32_t max_size
1347
1456
}
1348
1457
1349
1458
if (max_size < info->max_packet_size ) {
1350
- MBED_ASSERT (0 );
1459
+ #if MBED_TRAP_ERRORS_ENABLED
1460
+ MBED_ERROR (
1461
+ MBED_MAKE_ERROR (
1462
+ MBED_MODULE_DRIVER_USB,
1463
+ MBED_ERROR_CODE_INVALID_SIZE
1464
+ ),
1465
+ " The size of the data to read is less than the max packet size for this endpoint."
1466
+ );
1467
+ #else
1351
1468
unlock ();
1352
1469
return false ;
1470
+ #endif // MBED_TRAP_ERRORS_ENABLED
1353
1471
}
1354
1472
1355
1473
if (info->pending ) {
@@ -1373,9 +1491,18 @@ uint32_t USBDevice::read_finish(usb_ep_t endpoint)
1373
1491
lock ();
1374
1492
1375
1493
if (!EP_INDEXABLE (endpoint)) {
1376
- MBED_ASSERT (0 );
1494
+ #if MBED_TRAP_ERRORS_ENABLED
1495
+ MBED_ERROR (
1496
+ MBED_MAKE_ERROR (
1497
+ MBED_MODULE_DRIVER_USB,
1498
+ MBED_ERROR_CODE_INVALID_INDEX
1499
+ ),
1500
+ " The endpoint is not indexable."
1501
+ );
1502
+ #else
1377
1503
unlock ();
1378
1504
return 0 ;
1505
+ #endif // MBED_TRAP_ERRORS_ENABLED
1379
1506
}
1380
1507
1381
1508
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
@@ -1397,9 +1524,18 @@ bool USBDevice::write_start(usb_ep_t endpoint, uint8_t *buffer, uint32_t size)
1397
1524
lock ();
1398
1525
1399
1526
if (!EP_INDEXABLE (endpoint)) {
1400
- MBED_ASSERT (0 );
1527
+ #if MBED_TRAP_ERRORS_ENABLED
1528
+ MBED_ERROR (
1529
+ MBED_MAKE_ERROR (
1530
+ MBED_MODULE_DRIVER_USB,
1531
+ MBED_ERROR_CODE_INVALID_INDEX
1532
+ ),
1533
+ " The endpoint is not indexable"
1534
+ );
1535
+ #else
1401
1536
unlock ();
1402
1537
return false ;
1538
+ #endif // MBED_TRAP_ERRORS_ENABLED
1403
1539
}
1404
1540
1405
1541
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
@@ -1411,10 +1547,18 @@ bool USBDevice::write_start(usb_ep_t endpoint, uint8_t *buffer, uint32_t size)
1411
1547
}
1412
1548
1413
1549
if (size > info->max_packet_size ) {
1414
- // Size being written is too large
1415
- MBED_ASSERT (0 );
1550
+ #if MBED_TRAP_ERRORS_ENABLED
1551
+ MBED_ERROR (
1552
+ MBED_MAKE_ERROR (
1553
+ MBED_MODULE_DRIVER_USB,
1554
+ MBED_ERROR_CODE_INVALID_SIZE
1555
+ ),
1556
+ " Size being written is too large."
1557
+ );
1558
+ #else
1416
1559
unlock ();
1417
1560
return false ;
1561
+ #endif // MBED_TRAP_ERRORS_ENABLED
1418
1562
}
1419
1563
1420
1564
if (info->pending ) {
@@ -1443,9 +1587,18 @@ uint32_t USBDevice::write_finish(usb_ep_t endpoint)
1443
1587
lock ();
1444
1588
1445
1589
if (!EP_INDEXABLE (endpoint)) {
1446
- MBED_ASSERT (0 );
1590
+ #if MBED_TRAP_ERRORS_ENABLED
1591
+ MBED_ERROR (
1592
+ MBED_MAKE_ERROR (
1593
+ MBED_MODULE_DRIVER_USB,
1594
+ MBED_ERROR_CODE_INVALID_INDEX
1595
+ ),
1596
+ " The endpoint is not indexable."
1597
+ );
1598
+ #else
1447
1599
unlock ();
1448
1600
return 0 ;
1601
+ #endif // MBED_TRAP_ERRORS_ENABLED
1449
1602
}
1450
1603
1451
1604
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
0 commit comments