Updated on 2022-02-24 GMT+08:00

Portability

The adapter layer of device-cloud interconnect components provides common hardware and network adapter APIs. Device or module vendors can complete the porting of device-cloud interconnect components after adapting their hardware to these APIs. The following table lists the to-be-ported APIs and related functions.

Table 1 APIs to which the to-be-ported device-cloud interconnect components need adapt

API Category

API

Description

Network socket API

atiny_net_connect

Creates a socket network connection.

atiny_net_recv

Receives packets.

atiny_net_send

Sends packets.

atiny_net_recv_timeout

Receives packets in a blocking manner.

atiny_net_close

Closes a socket network connection.

Hardware API

atiny_gettime_ms

Obtains the system time (ms).

atiny_usleep

Delay function, measured in μs.

atiny_random

Hardware random number function.

atiny_malloc

Applies for dynamic memory.

atiny_free

Releases dynamic memory.

atiny_snprintf

Formats character strings.

atiny_printf

Outputs logs.

API for resource exclusion

atiny_mutex_create

Creates a mutual exclusion lock.

atiny_mutex_destroy

Destroy a mutual exclusion lock.

atiny_mutex_lock

Obtains a mutual exclusion lock.

atiny_mutex_unlock

Releases a mutual exclusion lock.

NOTE:

Device-cloud interconnect components can be ported in OS and non-OS modes. The OS mode is recommended.

Device-cloud interconnect components support firmware upgrade. The components need to adapt to the atiny_storage_device_s object.

atiny_storage_device_s *atiny_get_hal_storage_device(void); 
struct atiny_storage_device_tag_s; 
typedef struct atiny_storage_device_tag_s  atiny_storage_device_s; 
struct atiny_storage_device_tag_s 
{ 
//Device initialization
int (*init)( storage_device_s *this); 
//Begin to write
int (*begin_software_download)( storage_device_s *this); 
//Write software, and start from offset. buffer indicates the content, and len indicates the length.
int (*write_software)( storage_device_s *this , uint32_t offset, const char *buffer, uint32_t len); 

//Download completed
int (*end_software_download)( storage_device_s *this); 
//Activate software
int (*active_software)( storage_device_s *this); 
//Activated results are obtained. O indicates successful. 1 indicates failed.
int (*get_active_result)( storage_device_s *this); 
//Write update_info, and start from offset. buffer indicates the content, and len indicates the length.
int (*write_update_info)( storage_device_s *this, long offset, const char *buffer, uint32_t len); 
//Read update_info, and start from offset. buffer indicates the content, and len indicates the length.
int (*read_update_info)( storage_device_s *this, long offset, char *buffer, uint32_t len); 
};