| 130 | } |
| 131 | |
| 132 | CO_ReturnError_t |
| 133 | CO_storage_init(CO_storage_t* storage, CO_CANmodule_t* CANmodule, OD_entry_t* OD_1010_StoreParameters, |
| 134 | OD_entry_t* OD_1011_RestoreDefaultParameters, |
| 135 | ODR_t (*store)(CO_storage_entry_t* entry, CO_CANmodule_t* CANmodule), |
| 136 | ODR_t (*restore)(CO_storage_entry_t* entry, CO_CANmodule_t* CANmodule), CO_storage_entry_t* entries, |
| 137 | uint8_t entriesCount) { |
| 138 | /* verify arguments */ |
| 139 | if ((storage == NULL) || (CANmodule == NULL) || (OD_1010_StoreParameters == NULL) |
| 140 | || (OD_1011_RestoreDefaultParameters == NULL) || (store == NULL) || (restore == NULL) || (entries == NULL)) { |
| 141 | return CO_ERROR_ILLEGAL_ARGUMENT; |
| 142 | } |
| 143 | |
| 144 | /* Configure object variables */ |
| 145 | storage->CANmodule = CANmodule; |
| 146 | storage->store = store; |
| 147 | storage->restore = restore; |
| 148 | storage->entries = entries; |
| 149 | storage->entriesCount = entriesCount; |
| 150 | |
| 151 | /* configure extensions */ |
| 152 | storage->OD_1010_extension.object = storage; |
| 153 | storage->OD_1010_extension.read = OD_readOriginal; |
| 154 | storage->OD_1010_extension.write = OD_write_1010; |
| 155 | (void)OD_extension_init(OD_1010_StoreParameters, &storage->OD_1010_extension); |
| 156 | |
| 157 | storage->OD_1011_extension.object = storage; |
| 158 | storage->OD_1011_extension.read = OD_readOriginal; |
| 159 | storage->OD_1011_extension.write = OD_write_1011; |
| 160 | (void)OD_extension_init(OD_1011_RestoreDefaultParameters, &storage->OD_1011_extension); |
| 161 | |
| 162 | return CO_ERROR_NO; |
| 163 | } |
| 164 | |
| 165 | #endif /* (CO_CONFIG_STORAGE) & CO_CONFIG_STORAGE_ENABLE */ |
no test coverage detected