add driver destroy function.
enable edge triggering.
add simple ringbuffer implementation.
Merge branch 'ring_buffer' into dev
add license.
refactor out session into its own c file.