# Change Log All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] ### Added - `di_hash_murmur2` function - `di_can_set_nodeid` function - `di_can_msg_enable_timesync` function - `di_can_msg_recv` subsystem - `di_can_msg_recv_set_blocking` now controls `di_can_recv` - `di_can_msg_recv_set_timeout` now controls `di_can_recv` - `di_can_msg_read_*` functions - `di_can_msg_write_*` functions - `di_can_net` subsystem (datatypes, structures) - `di_can_msgtype_str` function - `di_can_ptype_str` function - Macro `DI_CAN_MSGTYPE_ANY` for `di_can_recv` - Macro `DI_CAN_TRANSFERTYPE_REPLY_ERR` - Constants - `DI_CAN_NODEID_*` (`enum di_can_nodeids`) - `DI_CAN_PTYPE_*` (`enum di_can_ptype`) - `DI_CAN_RAW_DTYPE_*` (`enum di_can_raw_ptypes`) - `DI_CAN_NET_DTYPE_*` (`enum di_can_net_ptypes`) ### Changed - `di_can_init` nodeid parameter is now removed, `di_can_set_nodeid` is the replacement - `di_can_callback_execute` has a extra parameter `struct di_can_msg **msg`. - `di_can_recv` is now able to block when no messages are ready (assembled) - `di_can_callback_execute` is now able to block with a mutex (with timeout) - `enum di_can_raw_type` renamed to `enum di_can_raw_dtypes` - `enum di_rpc_type` renamed to `enum di_rpc_types` - `enum di_can_transfertype` definitions are now written in full length: `REPLY_ERR, REPLY, REQUEST, PUBLISH` - `enum di_can_raw_send` now needs a extra `dst_id` parameter - `di_rpc_type_to_str` renamed to `di_rpc_types_to_str` - macro `DI_RPC_TYPE` renamed to `DI_RPC_TYPE_CLASS_METHOD` due to conflict - split can msg reassemble into seperate file instead of `can.c` - cleanup and simplify `can/framing.c` - replace all occurences of `di_bsem_wait|post(&ctx->msg.lock)` with `di_can_msg_lock|unlock(ctx)` ### Fixed - More can stack tests [Unreleased]: https://portal.dualinventive.com/git/dinet/libdi/compare/master...dinet_story_750