agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
mcp2515.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2024 ykat UG (haftungsbeschraenkt) - All Rights Reserved
3  *
4  * Permission for non-commercial use is hereby granted,
5  * free of charge, without warranty of any kind.
6  */
7 #ifndef ZRTOS_VFS_MODULE_MCP2515_H
8 #define ZRTOS_VFS_MODULE_MCP2515_H
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 
14 #include <zrtos/vfs_module.h>
15 #include <zrtos/mem.h>
16 #include <zrtos/va.h>
17 
18 #define ZRTOS_VFS_MODULE_MCP2515_BITRATE__COMBINE(cfg1,cfg2,cfg3)\
19  ((cfg1) | ((cfg2)<<8) | ((cfg3)<<16))
20 
21 typedef enum{
65 
66 #undef ZRTOS_VFS_MODULE_MCP2515_BITRATE__COMBINE
67 
68 uint8_t zrtos_vfs_module_mcp2515_bitrate__get_cfg1(zrtos_vfs_module_mcp2515_bitrate_t thiz){
69  return thiz & 0xFF;
70 }
71 
72 uint8_t zrtos_vfs_module_mcp2515_bitrate__get_cfg2(zrtos_vfs_module_mcp2515_bitrate_t thiz){
73  return (thiz >> 8) & 0xFF;
74 }
75 
76 uint8_t zrtos_vfs_module_mcp2515_bitrate__get_cfg3(zrtos_vfs_module_mcp2515_bitrate_t thiz){
77  return (thiz >> 16) & 0xFF;
78 }
79 
80 typedef enum{
84 
85 typedef enum/*enum zrtos_vfs_module_mcp2515_register_rxf_t */{
86  ZRTOS_VFS_MODULE_MCP2515_REGISTER_RXF__RXF0 = ZRTOS_VFS_MODULE_MCP2515_REGISTER__RXF0SIDH,
87  ZRTOS_VFS_MODULE_MCP2515_REGISTER_RXF__RXF1 = ZRTOS_VFS_MODULE_MCP2515_REGISTER__RXF1SIDH,
88  ZRTOS_VFS_MODULE_MCP2515_REGISTER_RXF__RXF2 = ZRTOS_VFS_MODULE_MCP2515_REGISTER__RXF2SIDH,
89  ZRTOS_VFS_MODULE_MCP2515_REGISTER_RXF__RXF3 = ZRTOS_VFS_MODULE_MCP2515_REGISTER__RXF3SIDH,
90  ZRTOS_VFS_MODULE_MCP2515_REGISTER_RXF__RXF4 = ZRTOS_VFS_MODULE_MCP2515_REGISTER__RXF4SIDH,
91  ZRTOS_VFS_MODULE_MCP2515_REGISTER_RXF__RXF5 = ZRTOS_VFS_MODULE_MCP2515_REGISTER__RXF5SIDH
92 }zrtos_vfs_module_mcp2515_register_rxf_t;
93 
94 typedef enum /*uint8_t*/{
104 
105 typedef enum /*uint8_t*/{
112 
113 typedef enum /*uint8_t*/{
121 
122 typedef enum /*uint8_t*/{
126 
127 typedef enum /*class TXBnCTRL : uint8_t */{
135 
136 typedef enum /*uint8_t*/{
143 
144 typedef enum /*uint8_t*/{
149 
150 typedef enum /*uint8_t*/{
154 
155 typedef enum /*uint8_t*/{
158 
159  static uint8_t = 0x08;
160 typedef enum /*uint8_t */{
163 
164 typedef enum /*uint8_t */{
168 
169 typedef enum /*uint8_t */{
177 
178 typedef enum /*uint8_t */{
184  )
186 
187 typedef enum{
196 
197 typedef enum{
214 
215 typedef enum{
234 
235 typedef enum{
316 
317 typedef enum{
322 
323 typedef enum{
329 
330 typedef struct{
331  zrtos_vfs_module_mcp2515_register_t ctrl;
332  zrtos_vfs_module_mcp2515_register_t sidh;
333  zrtos_vfs_module_mcp2515_register_t data;
335 
336 typedef struct{
337  zrtos_vfs_module_mcp2515_register_t ctrl;
338  zrtos_vfs_module_mcp2515_register_t sidh;
339  zrtos_vfs_module_mcp2515_register_t data;
342 
343 typedef struct{
344  uint8_t data[4];
346 
348  return thiz->data;
349 }
350 
352  return 4;
353 }
354 
356  zrtos_vfs_module_mcp2515_register_t reg
357  ,uint8_t *values
358  ,size_t values_length
359 ){
360  uint8_t buffer[] = {
362  ,reg
363  };
364 
366  fd
367  ,2
368  ,buffer
370  ,values
371  ,values_length
372  );
373 
374  return ret;
375 }
376 
378  zrtos_vfs_fd_t fd
379  ,zrtos_vfs_module_mcp2515_register_t reg
380  ,uint8_t *value
381 ){
383  fd
384  ,reg
385  ,value
386  ,1
387  );
388 }
389 
391  zrtos_vfs_module_mcp2515_register_t reg
392  ,uint8_t *values
393  ,size_t values_length
394 ){
395  uint8_t buffer[] = {
397  ,reg
398  };
399 
401  fd
402  ,2
403  ,buffer
405  ,values
406  ,values_length
407  );
408 
409  return ret;
410 }
411 
413  zrtos_vfs_fd_t fd
414  ,zrtos_vfs_module_mcp2515_register_t reg
415  ,uint8_t value
416 ){
418  fd
419  ,reg
420  ,&value
421  ,1
422  );
423 }
424 
426  zrtos_vfs_fd_t fd
427  ,zrtos_vfs_module_mcp2515_register_t reg
428  ,uint8_t mask
429  ,uint8_t data
430 ){
431  uint8_t buffer[] = {
433  ,reg
434  ,mask
435  ,data
436  };
437 
439  fd
440  ,1
441  ,buffer
443  );
444 
445  return ret;
446 }
447 
449  zrtos_vfs_fd_t fd
450  ,uint8_t *res
451 ){
452  uint8_t buffer[] = {
454  };
455 
457  fd
458  ,2
459  ,buffer
461  ,res
462  ,1
463  );
464 
465  return ret;
466 }
467 
469  zrtos_vfs_fd_t fd
471 ){
473  fd
476  ,mode
477  );
478  size_t l = 10;
479  bool modeMatch = false;
480 
481  if(zrtos_error__is_success(ret)){
482  while(l--){
483  uint8_t newmode;
485  fd
487  ,&newmode
488  );
489  if(!zrtos_error__is_success(ret)
490  || (modeMatch = mode == (newmode & ZRTOS_VFS_MODULE_MCP2515_REGISTER_CANSTAT__OPMOD))){
491  break;
492  }
493  }
494  }
495 
496  if(zrtos_error__is_success(ret)){
497  ret = modeMatch
500  ;
501  }
502 
503  return ret;
504 }
505 
508  fd
510  );
511 }
512 
515  fd
517  );
518 }
519 
522  fd
524  );
525 }
526 
529  fd
531  );
532 }
533 
536  fd
538  );
539 }
540 
542  zrtos_vfs_fd_t fd
543  ,zrtos_vfs_module_mcp2515_bitrate_t bitrate
544 ){
545  zrtos_error_t ret;
547  fd
548  ))
550  fd
553  ))
555  fd
558  ))
560  fd
563  ))){
564  continue;
565  }
566  return ret;
567 }
568 
570  zrtos_vfs_fd_t fd
571  ,zrtos_vfs_module_mcp2515_clkout_t divisor
572 ){
574  uint8_t clken;
575  uint8_t cnf3;
576 
578  clken = 0x00;//Turn off CLKEN
579  cnf3 = ZRTOS_VFS_MODULE_MCP2515_REGISTER_CNF3__SOF;//Turn on CLKOUT for SOF
580  }else{
582  cnf3 = 0x00;//Turn off CLKOUT for SOF
583 
584  //Set the prescaler (CLKPRE)
586  fd
589  ,divisor
590  );
591  }
592 
596  fd
599  ,clken
600  )
601  ))
604  fd
607  ,cnf3
608  )
609  ))){
610  continue;
611  }
612 
613  return ret;
614 }
615 
618  ,bool ext
619  ,uint32_t id
620 ){
622  uint8_t *buffer = thiz->data;
623  uint16_t canid = (uint16_t)(id & 0x0FFFF);
624 
625  if(ext){
626  if(id <= 536870911){
627  buffer[ZRTOS_VFS_MODULE_MCP2515_MCP__EID0] = (uint8_t) (canid & 0xFF);
628  buffer[ZRTOS_VFS_MODULE_MCP2515_MCP__EID8] = (uint8_t) (canid >> 8);
629  canid = (uint16_t)(id >> 16);
630  buffer[ZRTOS_VFS_MODULE_MCP2515_MCP__SIDL] = (uint8_t) (canid & 0x03);
631  buffer[ZRTOS_VFS_MODULE_MCP2515_MCP__SIDL] += (uint8_t) ((canid & 0x1C) << 3);
633  buffer[ZRTOS_VFS_MODULE_MCP2515_MCP__SIDH] = (uint8_t) (canid >> 5);
634  goto L_RETURN;
635  }
636  }else{
637  if(id <= 2047){
638  buffer[ZRTOS_VFS_MODULE_MCP2515_MCP__SIDH] = (uint8_t) (canid >> 3);
639  buffer[ZRTOS_VFS_MODULE_MCP2515_MCP__SIDL] = (uint8_t) ((canid & 0x07 ) << 5);
642  goto L_RETURN;
643  }
644  }
645 
646  ret = ZRTOS_ERROR__INVAL;
647 L_RETURN:
648  return ret;
649 }
650 
652  zrtos_vfs_fd_t fd
653  ,uint8_t reg
654  ,bool ext
655  ,uint32_t ulData
656 ){
659 
662  ret = zrtos_vfs_module_mcp2515_id__init(&tbufdata, ext, ulData)
663  ))){
665  reg
668  );
669  }
670 
671  return ret;
672 }
673 
675  zrtos_vfs_fd_t fd
676  ,zrtos_vfs_module_mcp2515_mask_t reg
677  ,bool ext
678  ,uint32_t ulData
679 ){
681  fd
682  ,reg
683  ,ext
684  ,ulData
685  );
686 }
687 
689  zrtos_vfs_fd_t fd
690  ,zrtos_vfs_module_mcp2515_register_rxf_t reg
691  ,bool ext
692  ,uint32_t ulData
693 ){
695  fd
696  ,reg
697  ,ext
698  ,ulData
699  );
700 }
701 
703  uint8_t zeros[14] = {};
704  zrtos_vfs_module_mcp2515_register_rxf_t filters[] = {
705  ZRTOS_VFS_MODULE_MCP2515_REGISTER_RXF__RXF0
706  ,ZRTOS_VFS_MODULE_MCP2515_REGISTER_RXF__RXF1
707  ,ZRTOS_VFS_MODULE_MCP2515_REGISTER_RXF__RXF2
708  ,ZRTOS_VFS_MODULE_MCP2515_REGISTER_RXF__RXF3
709  ,ZRTOS_VFS_MODULE_MCP2515_REGISTER_RXF__RXF4
710  ,ZRTOS_VFS_MODULE_MCP2515_REGISTER_RXF__RXF5
711  };
712  zrtos_vfs_module_mcp2515_mask_t masks[] = {
715  };
716  uint8_t buffer[] = {
718  };
720  fd
721  ,1
722  ,buffer
724  );
725 
727 
731  fd
733  ,zeros
734  ,14
735  )
736  ))
739  fd
741  ,zeros
742  ,14
743  )
744  ))
747  fd
749  ,zeros
750  ,14
751  )
752  ))
755  fd
757  ,0
758  )
759  ))
762  fd
764  ,0
765  )
766  ))
769  fd
771  ,(
776  )
777  )
778  ))
781  fd
783  ,(
787  ),(
791  )
792  )
793  ))
796  fd
798  ,(
801  ),(
804  )
805  )
806  ))){
807  for(size_t i=0; i<ZRTOS_TYPES__GET_STATIC_ARRAY_LENGTH(filters); i++){
808  ret = zrtos_vfs_module_mcp2515__set_filter(fd,filters[i],(i == 1),0);
809  if(zrtos_error__is_error(ret)){
810  goto L_RETURN;
811  }
812  }
813 
814  for(size_t i=0; i<ZRTOS_TYPES__GET_STATIC_ARRAY_LENGTH(masks); i++){
815  ret = zrtos_vfs_module_mcp2515__set_filter_mask(masks[i], true, 0);
816  if(zrtos_error__is_error(ret)){
817  goto L_RETURN;
818  }
819  }
820  }
821 
822 L_RETURN:
823  return ret;
824 }
825 
827  zrtos_vfs_fd_t fd
829  ,struct can_frame *frame
830 ){
831  zrtos_error_t ret;
833  uint8_t data[13];
834  bool ext;
835  bool rtr;
836  uint32_t id;
837  uint8_t ctrl;
838 
839  if(frame->can_dlc <= CAN_MAX_DLEN){
840  ext = (frame->can_id & CAN_EFF_FLAG);
841  rtr = (frame->can_id & CAN_RTR_FLAG);
842  id = (frame->can_id & (ext ? CAN_EFF_MASK : CAN_SFF_MASK));
843 
844  ret = zrtos_vfs_module_mcp2515_id__init(&iddata, ext, id);
845  if(zrtos_error__is_success(ret)){
846  memcpy(
847  &data[0]
850  );
851 
853  ? (
854  frame->can_dlc
856  )
857  : frame->can_dlc
858  ;
859 
860  memcpy(
862  ,frame->data
863  ,frame->can_dlc
864  );
865 
868  fd
869  ,txbn_regs.sidh
870  ,data
871  ,5 + frame->can_dlc
872  )
873  ))
876  fd
877  ,txbn_regs.ctrl
880  )
881  ))
884  fd
885  ,txbn_regs.ctrl
886  ,&ctrl
887  )
888  ))){
889  if((ctrl & (
893  )) != 0){
894  ret = ZRTOS_ERROR__IO;
895  }
896  }
897  }
898  }else{
899  ret = ZRTOS_ERROR__IO;
900  }
901 
902  return ret;
903 }
904 
906  zrtos_vfs_module_mcp2515__txbn_t txbn
907 ){
909  {
913  }
914  ,{
918  }
919  ,{
923  }
924  };
925 
926  return data[txbn];
927 }
928 
930  zrtos_vfs_fd_t fd
932 ){
933  zrtos_error_t ret;
934  uint8_t ctrlval;
935 
936  for(size_t i=0; i<ZRTOS_VFS_MODULE_MCP2515_TXBN__LENGTH; i++){
937  *txbn_regs = zrtos_vfs_module_mcp2515__get_txb(i);
940  fd
941  ,txbn_regs->ctrl
942  ,&ctrlval
943  )
944  ))
946  ){
947  goto L_RETURN;
948  }
949  }
950 
951  ret = ZRTOS_ERROR__AGAIN;
952 
953 L_RETURN:
954  return ret;
955 }
956 
958  zrtos_vfs_fd_t fd
959  ,struct can_frame *frame
960 ){
961  zrtos_error_t ret;
963 
966  ))){
968  fd
969  ,txbn_regs
970  ,frame
971  );
972  }
973 
974  return ret;
975 }
976 
979  , struct can_frame *frame
980 ){
981  zrtos_error_t ret;
983  {
988  }
989  ,{
994  }
995  };
996  zrtos_vfs_module_mcp2515_rxbn_regs_t *rxb = &rxbn_regs[rxbn];
997  uint8_t tbufdata[5];
998 
1001  fd
1002  ,rxb->sidh
1003  ,tbufdata
1004  ,5
1005  )
1006  ))){
1007  uint32_t id = (tbufdata[ZRTOS_VFS_MODULE_MCP2515_MCP__SIDH]<<3) + (tbufdata[ZRTOS_VFS_MODULE_MCP2515_MCP__SIDL]>>5);
1008 
1010  id = (id<<2) + (tbufdata[ZRTOS_VFS_MODULE_MCP2515_MCP__SIDL] & 0x03);
1011  id = (id<<8) + tbufdata[ZRTOS_VFS_MODULE_MCP2515_MCP__EID8];
1012  id = (id<<8) + tbufdata[ZRTOS_VFS_MODULE_MCP2515_MCP__EID0];
1013  id |= CAN_EFF_FLAG;
1014  }
1015 
1016  uint8_t dlc = (
1019  );
1020  if(dlc <= CAN_MAX_DLEN){
1021  uint8_t ctrl;
1022  ret = zrtos_vfs_module_mcp2515__read_register(fd,rxb->ctrl,&ctrl);
1023  if(zrtos_error__is_success(ret)){
1025  id |= CAN_RTR_FLAG;
1026  }
1027 
1028  frame->can_id = id;
1029  frame->can_dlc = dlc;
1030 
1032  fd
1033  ,rxb->data
1034  ,frame->data
1035  ,dlc
1036  );
1037  if(zrtos_error__is_success(ret)){
1039  fd
1041  ,rxb->rxnif
1042  ,0
1043  );
1044  }
1045  }
1046  }else{
1047  ret = ZRTOS_ERROR__IO;
1048  }
1049  }
1050 
1051  return ret;
1052 }
1053 
1055  zrtos_vfs_fd_t fd
1056  ,struct can_frame *frame
1057 ){
1058  uint8_t res;
1060 
1061  if(zrtos_error__is_success(ret)){
1062  if(ret & (
1065  )){
1067  fd
1068  ,(
1072  )
1073  ,frame
1074  );
1075  }else{
1076  ret = ZRTOS_ERROR__NOMSG;
1077  }
1078  }
1079 
1080  return ret;
1081 }
1082 
1084  uint8_t res;
1086 
1087  if(zrtos_error__is_success(ret)){
1091  ;
1092  }
1093 
1094  return res;
1095 }
1096 
1098  uint8_t res;
1100 
1101  if(zrtos_error__is_success(ret)){
1105  ;
1106  }
1107 
1108  return ret;
1109 }
1110 
1112  zrtos_vfs_fd_t fd
1113  ,uint8_t *res
1114 ){
1116  fd
1118  ,res
1119  );
1120 }
1121 
1123  zrtos_vfs_fd_t fd
1124 ){
1126  fd
1128  ,(
1131  )
1132  ,0
1133  );
1134 }
1135 
1137  zrtos_vfs_fd_t fd
1138  ,uint8_t *res
1139 ){
1141  fd
1143  ,res
1144  );
1145 }
1146 
1149  fd
1151  ,0
1152  );
1153 }
1154 
1156  zrtos_vfs_fd_t fd
1157  ,uint8_t *res
1158 ){
1160  fd
1162  ,res
1163  );
1164 }
1165 
1168  fd
1170  ,(
1174  )
1175  ,0
1176  );
1177 }
1178 
1180  uint8_t eflg;
1181  zrtos_error_t ret;
1182 
1185  )
1186  && eflg != 0
1189  )
1192  )){
1193  break;
1194  }
1195 
1196  return ret;
1197 }
1198 
1201  fd
1204  ,0
1205  );
1206 }
1207 
1210  fd
1213  ,0
1214  );
1215 }
1216 
1218  zrtos_vfs_fd_t fd
1219  ,uint8_t *res
1220 ){
1222  fd
1224  ,res
1225  );
1226 }
1227 
1229  zrtos_vfs_fd_t fd
1230  ,uint8_t *res
1231 ){
1233  fd
1235  ,res
1236  );
1237 }
1238 
1239 #ifdef __cplusplus
1240 }
1241 #endif
1242 #endif
zrtos_error_t zrtos_vfs_module_mcp2515__get_available_txb(zrtos_vfs_fd_t fd, zrtos_vfs_module_mcp2515_txbn_regs_t *txbn_regs)
Definition: mcp2515.h:929
zrtos_error_t zrtos_vfs_module_mcp2515__check_error(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:1097
No data available.
Definition: error.h:85
#define ZRTOS_TYPES__UINT32_MIN
Definition: types.h:185
zrtos_vfs_module_mcp2515_instruction_t
Definition: mcp2515.h:215
Unsuccessful program execution status.
Definition: error.h:23
zrtos_error_t zrtos_vfs_module_mcp2515__read_registers(zrtos_vfs_module_mcp2515_register_t reg, uint8_t *values, size_t values_length)
Definition: mcp2515.h:355
#define ZRTOS_TYPES__UINT8_MIN
Definition: types.h:181
zrtos_error_t zrtos_vfs_module_mcp2515__get_error_count_tx(zrtos_vfs_fd_t fd, uint8_t *res)
Definition: mcp2515.h:1228
zrtos_vfs_module_mcp2515_clkout_t
Definition: mcp2515.h:187
Try again.
Definition: error.h:35
zrtos_error_t zrtos_vfs_module_mcp2515__set_filter_mask(zrtos_vfs_fd_t fd, zrtos_vfs_module_mcp2515_mask_t reg, bool ext, uint32_t ulData)
Definition: mcp2515.h:674
zrtos_error_t zrtos_vfs_module_mcp2515__clear_interrupts(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:1147
zrtos_error_t zrtos_vfs_module_mcp2515__modify_register(zrtos_vfs_fd_t fd, zrtos_vfs_module_mcp2515_register_t reg, uint8_t mask, uint8_t data)
Definition: mcp2515.h:425
zrtos_error_t zrtos_vfs_module_mcp2515__get_error_flags(zrtos_vfs_fd_t fd, uint8_t *res)
Definition: mcp2515.h:1111
zrtos_error_t zrtos_vfs_module_mcp2515__reset(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:702
zrtos_error_t zrtos_vfs_module_mcp2515__set_loopback_mode(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:527
void * zrtos_vfs_module_mcp2515_id__get_buffer(zrtos_vfs_module_mcp2515_id_t *thiz)
Definition: mcp2515.h:347
uint8_t zrtos_vfs_module_mcp2515_bitrate__get_cfg1(zrtos_vfs_module_mcp2515_bitrate_t thiz)
Definition: mcp2515.h:68
zrtos_vfs_module_mcp2515_register_t data
Definition: mcp2515.h:339
zrtos_error_t zrtos_vfs_module_mcp2515__check_receive(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:1083
zrtos_error_t zrtos_vfs_module_mcp2515__clear_tx_interrupts(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:1166
zrtos_vfs_module_mcp2515_rxbn_t
Definition: mcp2515.h:317
zrtos_vfs_module_mcp2515_register_canintf_t
Definition: mcp2515.h:94
zrtos_vfs_module_mcp2515_txbn_regs_t zrtos_vfs_module_mcp2515__get_txb(zrtos_vfs_module_mcp2515__txbn_t txbn)
Definition: mcp2515.h:905
zrtos_error_t zrtos_vfs_module_mcp2515__clear_rx_and_ovr(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:1179
zrtos_error_t zrtos_vfs_module_mcp2515__get_interrupts(zrtos_vfs_fd_t fd, uint8_t *res)
Definition: mcp2515.h:1136
zrtos_error_t zrtos_vfs_module_mcp2515_id__init(zrtos_vfs_module_mcp2515_id_t *thiz, bool ext, uint32_t id)
Definition: mcp2515.h:616
static zrtos_error_t zrtos_vfs_module_mcp2515__set_filter_ex(zrtos_vfs_fd_t fd, uint8_t reg, bool ext, uint32_t ulData)
Definition: mcp2515.h:651
bool zrtos_error__is_error(zrtos_error_t thiz)
Definition: error.h:156
zrtos_vfs_module_mcp2515_register_rxb0ctrl_t
Definition: mcp2515.h:144
zrtos_error_t zrtos_vfs_module_mcp2515__clear_errif(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:1208
zrtos_error_t zrtos_vfs_module_mcp2515__send_message_ex(zrtos_vfs_fd_t fd, zrtos_vfs_module_mcp2515_txbn_regs_t txbn_regs, struct can_frame *frame)
Definition: mcp2515.h:826
zrtos_vfs_module_mcp2515_register_canstat_t
Definition: mcp2515.h:122
#define ZRTOS_TYPES__INT8_MAX
Definition: types.h:173
zrtos_vfs_module_mcp2515_register_canintf_t rxnif
Definition: mcp2515.h:340
zrtos_error_t zrtos_vfs_module_mcp2515__set_normal_mode(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:534
zrtos_error_t zrtos_vfs_module_mcp2515__clear_rx_and_ovr_flags(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:1122
bool zrtos_error__is_success(zrtos_error_t thiz)
Definition: error.h:152
zrtos_vfs_module_mcp2515_mcp_dlc_t
Definition: mcp2515.h:164
uint8_t zrtos_vfs_module_mcp2515__get_status(zrtos_vfs_fd_t fd, uint8_t *res)
Definition: mcp2515.h:448
zrtos_error_t zrtos_vfs_module_mcp2515__read_message(zrtos_vfs_fd_t fd, struct can_frame *frame)
Definition: mcp2515.h:1054
zrtos_vfs_module_mcp2515_bitrate_t
Definition: mcp2515.h:21
zrtos_vfs_module_mcp2515_register_txbnctrl_t
Definition: mcp2515.h:127
#define ZRTOS_TYPES__GET_STATIC_ARRAY_LENGTH(arr)
Definition: types.h:166
zrtos_error_t zrtos_vfs_module_mcp2515__get_interrupt_mask(zrtos_vfs_fd_t fd, uint8_t *res)
Definition: mcp2515.h:1155
Successful program execution status.
Definition: error.h:22
zrtos_error_t zrtos_vfs_module_mcp2515__read_message_ex(zrtos_vfs_module_mcp2515_rxbn_t rxbn, struct can_frame *frame)
Definition: mcp2515.h:977
zrtos_error_t zrtos_vfs_module_mcp2515__set_listen_only_mode(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:513
zrtos_vfs_module_mcp2515_register_rxbnctrl_t
Definition: mcp2515.h:136
zrtos_vfs_module_mcp2515_status_t
Definition: mcp2515.h:178
zrtos_error_t zrtos_vfs_module_mcp2515__read_register(zrtos_vfs_fd_t fd, zrtos_vfs_module_mcp2515_register_t reg, uint8_t *value)
Definition: mcp2515.h:377
zrtos_error_t zrtos_vfs_module_mcp2515__send_message(zrtos_vfs_fd_t fd, struct can_frame *frame)
Definition: mcp2515.h:957
zrtos_error_t zrtos_vfs_module_mcp2515__get_error_count_rx(zrtos_vfs_fd_t fd, uint8_t *res)
Definition: mcp2515.h:1217
zrtos_vfs_module_mcp2515_mcp_t
Definition: mcp2515.h:169
zrtos_error_t zrtos_vfs_module_mcp2515__set_bitrate(zrtos_vfs_fd_t fd, zrtos_vfs_module_mcp2515_bitrate_t bitrate)
Definition: mcp2515.h:541
zrtos_error_t zrtos_vfs_module_mcp2515__clear_merr(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:1199
Invalid argument.
Definition: error.h:46
zrtos_vfs_module_mcp2515_register_canctrl_t
Definition: mcp2515.h:105
zrtos_error_t zrtos_vfs_module_mcp2515__set_config_mode(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:506
zrtos_error_t zrtos_vfs_module_mcp2515__set_clk_out(zrtos_vfs_fd_t fd, zrtos_vfs_module_mcp2515_clkout_t divisor)
Definition: mcp2515.h:569
zrtos_error_t zrtos_vfs_fd__spi_transfer(zrtos_vfs_fd_t fd, size_t len,...)
Definition: vfs_fd.h:113
zrtos_error_t zrtos_vfs_module_mcp2515__set_sleep_mode(zrtos_vfs_fd_t fd)
Definition: mcp2515.h:520
zrtos_error_t zrtos_vfs_module_mcp2515__set_register(zrtos_vfs_fd_t fd, zrtos_vfs_module_mcp2515_register_t reg, uint8_t value)
Definition: mcp2515.h:412
zrtos_vfs_module_mcp2515_mcp_sidl_t
Definition: mcp2515.h:160
zrtos_error_t zrtos_vfs_module_mcp2515__set_registers(zrtos_vfs_module_mcp2515_register_t reg, uint8_t *values, size_t values_length)
Definition: mcp2515.h:390
zrtos_vfs_module_mcp2515_register_t ctrl
Definition: mcp2515.h:331
zrtos_vfs_module_mcp2515_register_rxb1ctrl_t
Definition: mcp2515.h:150
zrtos_vfs_module_mcp2515_txbn_t
Definition: mcp2515.h:323
zrtos_vfs_module_mcp2515_register_canctrl_reqop_t
Definition: mcp2515.h:113
zrtos_vfs_module_mcp2515_register_t sidh
Definition: mcp2515.h:338
zrtos_error_t zrtos_vfs_module_mcp2515__set_filter(zrtos_vfs_fd_t fd, zrtos_vfs_module_mcp2515_register_rxf_t reg, bool ext, uint32_t ulData)
Definition: mcp2515.h:688
zrtos_vfs_module_mcp2515_mask_t
Definition: mcp2515.h:80
I/O error.
Definition: error.h:29
zrtos_vfs_module_mcp2515_register_t ctrl
Definition: mcp2515.h:337
uint8_t zrtos_vfs_module_mcp2515_bitrate__get_cfg2(zrtos_vfs_module_mcp2515_bitrate_t thiz)
Definition: mcp2515.h:72
#define ZRTOS_TYPES__INT8_MIN
Definition: types.h:172
static uint8_t
Definition: mcp2515.h:159
size_t zrtos_vfs_module_mcp2515_id__get_length(zrtos_vfs_module_mcp2515_id_t *thiz)
Definition: mcp2515.h:351
#define ZRTOS_TYPES__UINT8_MAX
Definition: types.h:182
uint8_t zrtos_vfs_module_mcp2515_bitrate__get_cfg3(zrtos_vfs_module_mcp2515_bitrate_t thiz)
Definition: mcp2515.h:76
zrtos_error_t
Definition: error.h:20
#define ZRTOS_TYPES__UINT32_MAX
Definition: types.h:186
void zrtos_gpio__delay_milliseconds(uint16_t ms)
Definition: gpio.h:512
zrtos_vfs_module_mcp2515_register_t data
Definition: mcp2515.h:333
zrtos_vfs_module_mcp2515_register_t sidh
Definition: mcp2515.h:332
zrtos_vfs_module_mcp2515_register_t
Definition: mcp2515.h:235
zrtos_error_t zrtos_vfs_module_mcp2515__set_mode(zrtos_vfs_fd_t fd, zrtos_vfs_module_mcp2515_register_canctrl_reqop_t mode)
Definition: mcp2515.h:468
No message of desired type.
Definition: error.h:66
zrtos_vfs_module_mcp2515_error_flag_t
Definition: mcp2515.h:197
#define ZRTOS_VFS_MODULE_MCP2515_BITRATE__COMBINE(cfg1, cfg2, cfg3)
Definition: mcp2515.h:18
zrtos_vfs_module_mcp2515_register_cnf3_t
Definition: mcp2515.h:155