The design philosophy in one word is encapsulation.
The necessary software of embedded systems are divided into several layers as shown in the figure.

Hardware Represent Layer (HRL) is set directly on the hardware layer to give a intensively unified definition of various registers bit by bit.
Such a definition can improve the readability of the source code.
HRL include two headfile "iocc1110.h" and "iocc1110_bitdef.h" which can be found in folder HRL.

Hardware Abstract Layer (HAL)1 is set directly on the HRL. It includes the controlling code of MPU common functions like ADC, interrupt, DMA, timer, etc. These functions are independent from the specific board design, and they are the base library for the board or application depended control.
The source code of this layer can be found in folder HAL_MPU

Hardware Abstract Layer 2 is set directly on the HAL_MPU. It includes the controlling code of board specific functions like accelerometer, key, joystick, etc. These functions are depend on the board design which need be adjusted when select some other new devices like new accelerate sensors, or ultrasonic sensors. The functions in this layer is based on the functions in the HAL_MPU.
The source code of this layer can be found in folder HAL_BUI. (BUI is the abstraction of Board User Interface)

RF Protocol Layer is set directly on the HAL_MPU as well. It includes the specific protocols for the applications. It is based on the functions in the HAL_MPU like "hal_mpu_radio.h".
The source code of this layer can be found in folder RFCMU. (RF Communication)
layered_library_construct2.gif