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; |