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)];
@@ -1306,9 +1397,18 @@ void USBDevice::endpoint_abort(usb_ep_t endpoint)
1306
1397
lock ();
1307
1398
1308
1399
if (!EP_INDEXABLE (endpoint)) {
1309
- MBED_ASSERT (0 );
1400
+ #if MBED_TRAP_ERRORS_ENABLED
1401
+ MBED_ERROR (
1402
+ MBED_MAKE_ERROR (
1403
+ MBED_MODULE_DRIVER_USB,
1404
+ MBED_ERROR_CODE_INVALID_INDEX
1405
+ ),
1406
+ " The endpoint is not indexable."
1407
+ );
1408
+ #else
1310
1409
unlock ();
1311
1410
return ;
1411
+ #endif // MBED_TRAP_ERRORS_ENABLED
1312
1412
}
1313
1413
1314
1414
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
@@ -1332,9 +1432,18 @@ bool USBDevice::read_start(usb_ep_t endpoint, uint8_t *buffer, uint32_t max_size
1332
1432
lock ();
1333
1433
1334
1434
if (!EP_INDEXABLE (endpoint)) {
1335
- MBED_ASSERT (0 );
1435
+ #if MBED_TRAP_ERRORS_ENABLED
1436
+ MBED_ERROR (
1437
+ MBED_MAKE_ERROR (
1438
+ MBED_MODULE_DRIVER_USB,
1439
+ MBED_ERROR_CODE_INVALID_INDEX
1440
+ ),
1441
+ " The endpoint is not indexable."
1442
+ );
1443
+ #else
1336
1444
unlock ();
1337
1445
return false ;
1446
+ #endif // MBED_TRAP_ERRORS_ENABLED
1338
1447
}
1339
1448
1340
1449
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
@@ -1346,9 +1455,18 @@ bool USBDevice::read_start(usb_ep_t endpoint, uint8_t *buffer, uint32_t max_size
1346
1455
}
1347
1456
1348
1457
if (max_size < info->max_packet_size ) {
1349
- MBED_ASSERT (0 );
1458
+ #if MBED_TRAP_ERRORS_ENABLED
1459
+ MBED_ERROR (
1460
+ MBED_MAKE_ERROR (
1461
+ MBED_MODULE_DRIVER_USB,
1462
+ MBED_ERROR_CODE_INVALID_SIZE
1463
+ ),
1464
+ " The size of the data to read is less than the max packet size for this endpoint."
1465
+ );
1466
+ #else
1350
1467
unlock ();
1351
1468
return false ;
1469
+ #endif // MBED_TRAP_ERRORS_ENABLED
1352
1470
}
1353
1471
1354
1472
if (info->pending ) {
@@ -1372,9 +1490,18 @@ uint32_t USBDevice::read_finish(usb_ep_t endpoint)
1372
1490
lock ();
1373
1491
1374
1492
if (!EP_INDEXABLE (endpoint)) {
1375
- MBED_ASSERT (0 );
1493
+ #if MBED_TRAP_ERRORS_ENABLED
1494
+ MBED_ERROR (
1495
+ MBED_MAKE_ERROR (
1496
+ MBED_MODULE_DRIVER_USB,
1497
+ MBED_ERROR_CODE_INVALID_INDEX
1498
+ ),
1499
+ " The endpoint is not indexable."
1500
+ );
1501
+ #else
1376
1502
unlock ();
1377
1503
return 0 ;
1504
+ #endif // MBED_TRAP_ERRORS_ENABLED
1378
1505
}
1379
1506
1380
1507
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
@@ -1396,9 +1523,18 @@ bool USBDevice::write_start(usb_ep_t endpoint, uint8_t *buffer, uint32_t size)
1396
1523
lock ();
1397
1524
1398
1525
if (!EP_INDEXABLE (endpoint)) {
1399
- MBED_ASSERT (0 );
1526
+ #if MBED_TRAP_ERRORS_ENABLED
1527
+ MBED_ERROR (
1528
+ MBED_MAKE_ERROR (
1529
+ MBED_MODULE_DRIVER_USB,
1530
+ MBED_ERROR_CODE_INVALID_INDEX
1531
+ ),
1532
+ " The endpoint is not indexable"
1533
+ );
1534
+ #else
1400
1535
unlock ();
1401
1536
return false ;
1537
+ #endif // MBED_TRAP_ERRORS_ENABLED
1402
1538
}
1403
1539
1404
1540
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
@@ -1410,10 +1546,18 @@ bool USBDevice::write_start(usb_ep_t endpoint, uint8_t *buffer, uint32_t size)
1410
1546
}
1411
1547
1412
1548
if (size > info->max_packet_size ) {
1413
- // Size being written is too large
1414
- MBED_ASSERT (0 );
1549
+ #if MBED_TRAP_ERRORS_ENABLED
1550
+ MBED_ERROR (
1551
+ MBED_MAKE_ERROR (
1552
+ MBED_MODULE_DRIVER_USB,
1553
+ MBED_ERROR_CODE_INVALID_SIZE
1554
+ ),
1555
+ " Size being written is too large."
1556
+ );
1557
+ #else
1415
1558
unlock ();
1416
1559
return false ;
1560
+ #endif // MBED_TRAP_ERRORS_ENABLED
1417
1561
}
1418
1562
1419
1563
if (info->pending ) {
@@ -1442,9 +1586,18 @@ uint32_t USBDevice::write_finish(usb_ep_t endpoint)
1442
1586
lock ();
1443
1587
1444
1588
if (!EP_INDEXABLE (endpoint)) {
1445
- MBED_ASSERT (0 );
1589
+ #if MBED_TRAP_ERRORS_ENABLED
1590
+ MBED_ERROR (
1591
+ MBED_MAKE_ERROR (
1592
+ MBED_MODULE_DRIVER_USB,
1593
+ MBED_ERROR_CODE_INVALID_INDEX
1594
+ ),
1595
+ " The endpoint is not indexable."
1596
+ );
1597
+ #else
1446
1598
unlock ();
1447
1599
return 0 ;
1600
+ #endif // MBED_TRAP_ERRORS_ENABLED
1448
1601
}
1449
1602
1450
1603
endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX (endpoint)];
0 commit comments