Add hardware abstraction layer.
Move and sort functions and defines in header file
Add functions decsription
Add main function to check and compile the code
Fix some issue