master/pdo_entry.c
changeset 1327 4d179b06dd3c
parent 1326 ef907b0b5125
child 1363 11c0b2caa253
equal deleted inserted replaced
1326:ef907b0b5125 1327:4d179b06dd3c
    35 
    35 
    36 #include "pdo_entry.h"
    36 #include "pdo_entry.h"
    37 
    37 
    38 /*****************************************************************************/
    38 /*****************************************************************************/
    39 
    39 
    40 /** Pdo entry constructor.
    40 /** PDO entry constructor.
    41  */
    41  */
    42 void ec_pdo_entry_init(
    42 void ec_pdo_entry_init(
    43         ec_pdo_entry_t *entry /**< Pdo entry. */
    43         ec_pdo_entry_t *entry /**< PDO entry. */
    44         )
    44         )
    45 {
    45 {
    46     entry->name = NULL;
    46     entry->name = NULL;
    47 }
    47 }
    48 
    48 
    49 /*****************************************************************************/
    49 /*****************************************************************************/
    50 
    50 
    51 /** Pdo entry copy constructor.
    51 /** PDO entry copy constructor.
    52  *
    52  *
    53  * \retval  0 Success.
    53  * \retval  0 Success.
    54  * \retval <0 Error code.
    54  * \retval <0 Error code.
    55  */
    55  */
    56 int ec_pdo_entry_init_copy(
    56 int ec_pdo_entry_init_copy(
    57         ec_pdo_entry_t *entry, /**< Pdo entry. */
    57         ec_pdo_entry_t *entry, /**< PDO entry. */
    58         const ec_pdo_entry_t *other /**< Pdo entry to copy from. */
    58         const ec_pdo_entry_t *other /**< PDO entry to copy from. */
    59         )
    59         )
    60 {
    60 {
    61     entry->index = other->index;
    61     entry->index = other->index;
    62     entry->subindex = other->subindex;
    62     entry->subindex = other->subindex;
    63     entry->name = NULL;
    63     entry->name = NULL;
    66     return ec_pdo_entry_set_name(entry, other->name);
    66     return ec_pdo_entry_set_name(entry, other->name);
    67 }
    67 }
    68 
    68 
    69 /*****************************************************************************/
    69 /*****************************************************************************/
    70 
    70 
    71 /** Pdo entry destructor.
    71 /** PDO entry destructor.
    72  */
    72  */
    73 void ec_pdo_entry_clear(ec_pdo_entry_t *entry /**< Pdo entry. */)
    73 void ec_pdo_entry_clear(ec_pdo_entry_t *entry /**< PDO entry. */)
    74 {
    74 {
    75     if (entry->name)
    75     if (entry->name)
    76         kfree(entry->name);
    76         kfree(entry->name);
    77 }
    77 }
    78 
    78 
    79 /*****************************************************************************/
    79 /*****************************************************************************/
    80 
    80 
    81 /** Set Pdo entry name.
    81 /** Set PDO entry name.
    82  *
    82  *
    83  * \retval  0 Success.
    83  * \retval  0 Success.
    84  * \retval <0 Error code.
    84  * \retval <0 Error code.
    85  */
    85  */
    86 int ec_pdo_entry_set_name(
    86 int ec_pdo_entry_set_name(
    87         ec_pdo_entry_t *entry, /**< Pdo entry. */
    87         ec_pdo_entry_t *entry, /**< PDO entry. */
    88         const char *name /**< New name. */
    88         const char *name /**< New name. */
    89         )
    89         )
    90 {
    90 {
    91     unsigned int len;
    91     unsigned int len;
    92 
    92 
    96     if (entry->name)
    96     if (entry->name)
    97         kfree(entry->name);
    97         kfree(entry->name);
    98 
    98 
    99     if (name && (len = strlen(name))) {
    99     if (name && (len = strlen(name))) {
   100         if (!(entry->name = (char *) kmalloc(len + 1, GFP_KERNEL))) {
   100         if (!(entry->name = (char *) kmalloc(len + 1, GFP_KERNEL))) {
   101             EC_ERR("Failed to allocate Pdo entry name.\n");
   101             EC_ERR("Failed to allocate PDO entry name.\n");
   102             return -ENOMEM;
   102             return -ENOMEM;
   103         }
   103         }
   104         memcpy(entry->name, name, len + 1);
   104         memcpy(entry->name, name, len + 1);
   105     } else {
   105     } else {
   106         entry->name = NULL;
   106         entry->name = NULL;
   109     return 0;
   109     return 0;
   110 }
   110 }
   111 
   111 
   112 /*****************************************************************************/
   112 /*****************************************************************************/
   113 
   113 
   114 /** Compares two Pdo entries.
   114 /** Compares two PDO entries.
   115  *
   115  *
   116  * \retval 1 The entries are equal.
   116  * \retval 1 The entries are equal.
   117  * \retval 0 The entries differ.
   117  * \retval 0 The entries differ.
   118  */
   118  */
   119 int ec_pdo_entry_equal(
   119 int ec_pdo_entry_equal(
   120         const ec_pdo_entry_t *entry1, /**< First Pdo entry. */
   120         const ec_pdo_entry_t *entry1, /**< First PDO entry. */
   121         const ec_pdo_entry_t *entry2 /**< Second Pdo entry. */
   121         const ec_pdo_entry_t *entry2 /**< Second PDO entry. */
   122         )
   122         )
   123 {
   123 {
   124     return entry1->index == entry2->index
   124     return entry1->index == entry2->index
   125         && entry1->subindex == entry2->subindex
   125         && entry1->subindex == entry2->subindex
   126         && entry1->bit_length == entry2->bit_length;
   126         && entry1->bit_length == entry2->bit_length;