Wolfgang Grandegger wrote:
> Jan Kiszka wrote:
>> Wolfgang Grandegger wrote:
>>> Wolfgang Grandegger wrote:
>>>> Jan Kiszka wrote:
>>>>> Wolfgang Grandegger wrote:
>>>>>> Jan Kiszka wrote:
>>>>>>> Hi Wolfgang,
>>>>>>>
>>>>>>> something is inconsistent about CAN_RAW in RT-Socket-CAN compared to
>>>>>>> plain Socket-CAN. Also, the latter doesn't know any CAN_PROTO_xxx
>>>>>>> unless
>>>>>>> I oversee something. Please have a look.
>>>>>> There is CAN_PROTO_RAW defined and I have added some time ago
>>>>>> CAN_RAW to
>>>>>> rtcan.h to be compatible with Socket-CAN:
>>>>>>
>>>>>>   /** Particular CAN protocols
>>>>>>    *
>>>>>>    *  Currently only the RAW protocol is supported.
>>>>>>    */
>>>>>>   #define CAN_RAW  0
>>>>> Yes, I know. But the question remains which way to go for rtcan:
>>>>> Socket-CAN doesn't know CAN_PROTO_*, RT-Socket-CAN comes with
>>>>> CAN_RAW as
>>>>> well now, but having a different value. That should be resolved, on
>>>>> whatever side, IMHO.
>>>> Ah, now I understand your concern. CAN_PROTO_RAW actually serves the
>>>> same purpose then CAN_RAW defining the particular CAN protocol. I'm
>>>> going to clean it up soon removing CAN_PROTO_RAW and updating the doc.
>>>> CAN_PROTO_RAW was not used by any application, IIRC.
>>> The man page for "socket" describes the protocol argument as shown
>>> below:
>>>
>>>        The  protocol specifies a particular protocol to be used with the
>>>        socket. Normally only a single protocol exists to support a
>>>        particular socket  type within a given protocol family, in which
>>>        case protocol can be specified as 0. However, it is possible that
>>>        many  protocols  may exist, in which case a particular protocol
>>>        must be specified in this manner.
>>>
>>> A value of 0 is valid for RT-Socket-CAN but not for Socket-CAN.
>>> Therefore we need to define CAN_RAW=1 for compatibility reasons.
>>
>> Agreed.
>>
>> Moreover, 0 means "unspecified default protocol" according to POSIX. On
>> what does Socket-CAN map it, CAN_RAW? Anyway, we have no other option so
>> far with RT-Socket-CAN.
> 
>   int rtcan_raw_socket(struct rtdm_dev_context *context,
>                        rtdm_user_info_t *user_info, int protocol)
>   {
>     /* Only CAN_PROTO_RAW is supported */
>     if (protocol != CAN_PROTO_RAW && protocol != 0)
>         return -EPROTONOSUPPORT;
> 
>     rtcan_socket_init(context);
> 
>     return 0;
>   }
> 
> Both, protocol "0" and CAN_PROTO_RAW is OK. I just need to replace
> CAN_PROTO_RAW with CAN_RAW.

Perfect.

Jan

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to