Commit c21ebf96 authored by whmaizmy's avatar whmaizmy

【修改内容】增加ip,mac,version等参数的初始化

【提交人】陈伟灿
parent 85e2f3fc
......@@ -30,9 +30,9 @@
#include "kk_product.h"
//#include "iot_import.h"
volatile char g_product_type[PRODUCT_TYPE_LEN]={"a1OYuSBt23u"};
volatile char g_product_code[PRODUCT_CODE_LEN] = {"aIqEbWno8yDdsjCX15iq"};
volatile char g_device_code[DEVICE_CODE_LEN];
char g_product_type[PRODUCT_TYPE_LEN];
char g_product_code[PRODUCT_CODE_LEN];
char g_device_code[DEVICE_CODE_LEN];
#define PLATFORM_WAIT_INFINITE (~0)
......@@ -185,10 +185,8 @@ int HAL_SetProduct_Type(_IN_ char *product_type)
if (len > PRODUCT_TYPE_LEN) {
return -1;
}
printf("HAL_SetProduct_Type [%d] [%s] \n", len, g_product_type);
memset(g_product_type, 0x0, PRODUCT_TYPE_LEN);
strncpy(g_product_type, product_type, len);
printf("HAL_SetProduct_Type end [%d] [%s] \n", len, g_product_type);
return len;
}
......@@ -221,9 +219,7 @@ int HAL_GetProduct_Type(_OU_ char *product_type)
{
int len = strlen(g_product_type);
memset(product_type, 0x0, PRODUCT_TYPE_LEN);
printf("HAL_GetProduct_Type [%d] [%s] \n", len, g_product_type);
strncpy(product_type, g_product_type, len);
printf("HAL_GetProduct_Type product_type [%d] [%s] \n", len, product_type);
return len;
}
......@@ -243,6 +239,15 @@ int HAL_GetDevice_Code(_OU_ char *device_code)
strncpy(device_code, g_device_code, len);
return len;
}
int HAL_GetVersion(_OU_ char *version)
{
char *ver = "test-1.0.0";
int len = strlen(ver);
memset(version, 0x0, VERSION_MAXLEN);
strncpy(version, ver, len);
version[len] = '\0';
return strlen(version);
}
/*
......@@ -440,11 +445,12 @@ void HAL_Reboot(void)
perror("HAL_Reboot failed");
}
}
#endif
#define ROUTER_INFO_PATH "/proc/net/route"
#define ROUTER_RECORD_SIZE 256
char *_get_default_routing_ifname(char *ifname, int ifname_size)
static char *_get_default_routing_ifname(char *ifname, int ifname_size)
{
FILE *fp = NULL;
char line[ROUTER_RECORD_SIZE] = {0};
......@@ -491,7 +497,48 @@ out:
}
uint32_t HAL_Wifi_Get_IP(char ip_str[NETWORK_ADDR_LEN], const char *ifname)
int HAL_Get_mac(char* mac)
{
struct ifreq tmp;
int sock_mac;
char mac_addr[30];
sock_mac = socket(AF_INET, SOCK_STREAM, 0);
if( sock_mac == -1){
perror("create socket fail\n");
return -1;
}
memset(&tmp,0,sizeof(tmp));
strncpy(tmp.ifr_name,"ens33",sizeof(tmp.ifr_name)-1 );
if( (ioctl( sock_mac, SIOCGIFHWADDR, &tmp)) < 0 ){
printf("mac ioctl error\n");
return -1;
}
sprintf(mac_addr, "%02x:%02x:%02x:%02x:%02x:%02x",
(unsigned char)tmp.ifr_hwaddr.sa_data[0],
(unsigned char)tmp.ifr_hwaddr.sa_data[1],
(unsigned char)tmp.ifr_hwaddr.sa_data[2],
(unsigned char)tmp.ifr_hwaddr.sa_data[3],
(unsigned char)tmp.ifr_hwaddr.sa_data[4],
(unsigned char)tmp.ifr_hwaddr.sa_data[5]
);
printf("local mac:%s\n", mac_addr);
close(sock_mac);
memcpy(mac,mac_addr,strlen(mac_addr));
return 0;
}
int HAL_Get_SN(char sn[SN_ADDR_LEN])
{
strncpy(sn,"11111111111111111111111111111111",SN_ADDR_LEN);
return 0;//just for test
}
int HAL_Get_port(void)
{
return 5555;//just for test
}
uint32_t HAL_Get_IP(char ip_str[NETWORK_ADDR_LEN], const char *ifname)
{
struct ifreq ifreq;
int sock = -1;
......@@ -526,6 +573,7 @@ uint32_t HAL_Wifi_Get_IP(char ip_str[NETWORK_ADDR_LEN], const char *ifname)
return ((struct sockaddr_in *)&ifreq.ifr_addr)->sin_addr.s_addr;
}
#if 0
static kv_file_t *kvfile = NULL;
int HAL_Kv_Set(const char *key, const void *val, int len, int sync)
......@@ -563,7 +611,7 @@ int HAL_Kv_Del(const char *key)
return kv_del(kvfile, (char *)key);
}
#endif
static long long os_time_get(void)
{
struct timeval tv;
......@@ -672,3 +720,4 @@ int HAL_Timer_Delete(void *timer)
return ret;
}
#endif
......@@ -22,7 +22,12 @@
#define MID_STR_MAXLEN (64)
#define PRODUCT_SECRET_MAXLEN (64 + 1)
#define FIRMWARE_VERSION_MAXLEN (32 + 1)
#define VERSION_MAXLEN (32 + 1)
#define HAL_CID_LEN (64 + 1)
#define NETWORK_ADDR_LEN (16) /* IPÍøÂçµØÖ·µÄ³¤¶È */
#define MAC_ADDR_LEN (17+1)
#define SN_ADDR_LEN (32+1)
#define PRODUCT_TPYE "a1OYuSBt23u"
#define PRODUCT_CODE "aIqEbWno8yDdsjCX15iq"
......
......@@ -6,6 +6,7 @@
#include "kk_tsl_api.h"
#include "kk_tsl_load.h"
#include "iot_export_linkkit.h"
#include "kk_product.h"
//const char DM_URI_SYS_PREFIX[] DM_READ_ONLY = "/sys/%s/%s/";
const char DM_URI_EXT_SESSION_PREFIX[] DM_READ_ONLY = "/ext/session/%s/%s/";
const char DM_URI_EXT_NTP_PREFIX[] DM_READ_ONLY = "/ext/ntp/%s/%s/";
......@@ -114,7 +115,56 @@ static int _dm_mgr_next_devid(void)
return ctx->global_devid++;
}
static int _dm_init_tsl_params(int devId)
{
int res = 0;
char version[VERSION_MAXLEN];
char s_IP[NETWORK_ADDR_LEN];
char s_mac[MAC_ADDR_LEN];
char s_SN[SN_ADDR_LEN];
int port = 0;
/*******set version***********/
HAL_GetVersion(version);
res = kk_tsl_set_value(kk_tsl_set_property_value,devId,KK_TSL_GATAWAY_VERSION_IDENTIFIER,NULL,version);
if(res != SUCCESS_RETURN)
{
printf("[%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
}
/*******set IP*************/
HAL_Get_IP(s_IP,NULL);
res = kk_tsl_set_value(kk_tsl_set_property_value,devId,KK_TSL_GATAWAY_IP_IDENTIFIER,NULL,s_IP);
if(res != SUCCESS_RETURN)
{
printf("[%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
}
/*******set MAC*************/
HAL_Get_mac(s_mac);
res = kk_tsl_set_value(kk_tsl_set_property_value,devId,KK_TSL_GATAWAY_MAC_IDENTIFIER,NULL,s_mac);
if(res != SUCCESS_RETURN)
{
printf("[%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
}
/*******set port*************/
port = HAL_Get_port();
res = kk_tsl_set_value(kk_tsl_set_property_value,devId,KK_TSL_GATAWAY_PORT_IDENTIFIER,&port,NULL);
if(res != SUCCESS_RETURN)
{
printf("[%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
}
/*******set sn*************/
HAL_Get_SN(s_SN);
res = kk_tsl_set_value(kk_tsl_set_property_value,devId,KK_TSL_GATAWAY_SN_IDENTIFIER,NULL,s_SN);
if(res != SUCCESS_RETURN)
{
printf("[%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
}
return res;
}
int dm_mgr_device_create(_IN_ int dev_type, _IN_ char product_key[PRODUCT_KEY_MAXLEN],
_IN_ char device_name[DEVICE_NAME_MAXLEN], _IN_ char device_secret[DEVICE_SECRET_MAXLEN], _OU_ int *devid)
{
......@@ -149,7 +199,7 @@ int dm_mgr_device_create(_IN_ int dev_type, _IN_ char product_key[PRODUCT_KEY_MA
memset(node, 0, sizeof(dm_mgr_dev_node_t));
if(dev_type == KK_DM_DEVICE_GATEWAY)
node->devid = 1;
node->devid = 0;
else
node->devid = _dm_mgr_next_devid();
node->dev_type = dev_type;
......@@ -171,6 +221,10 @@ int dm_mgr_device_create(_IN_ int dev_type, _IN_ char product_key[PRODUCT_KEY_MA
INIT_LIST_HEAD(&node->linked_list);
list_add_tail(&node->linked_list, &ctx->dev_list);
if(dev_type == KK_DM_DEVICE_GATEWAY){
_dm_init_tsl_params(node->devid);
}
if (devid) {
*devid = node->devid;
......
......@@ -197,6 +197,63 @@ static int _kk_msg_set_property_value(_IN_ int devid, _IN_ char *key, _IN_ int k
return SUCCESS_RETURN;
}
int _kk_tsl_set_property_value(_IN_ int devid, _IN_ char *key, _IN_ int key_len, _IN_ void *value,
_IN_ char *value_str)
{
int res = 0;
void *data = NULL;
kk_tsl_data_type_e type;
if (devid < 0 || key == NULL || key_len <= 0 || ((value == NULL) && (value_str == NULL))) {
return INVALID_PARAMETER;
}
res = _kk_msg_get_property_data(devid, key, key_len, &data);
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
res = kk_tsl_get_data_type(data, &type);
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
switch (type) {
case KK_TSL_DATA_TYPE_INT:
case KK_TSL_DATA_TYPE_ENUM:
case KK_TSL_DATA_TYPE_BOOL: {
int value_int = (value == NULL) ? (atoi(value_str)) : (*(int *)value);
res = _kk_msg_set_property_value(devid, key, key_len, &value_int, sizeof(int));
}
break;
case KK_TSL_DATA_TYPE_FLOAT: {
float value_float = (value == NULL) ? (atof(value_str)) : (*(float *)value);
res = _kk_msg_set_property_value(devid, key, key_len, &value_float, sizeof(float));
}
break;
case KK_TSL_DATA_TYPE_DOUBLE: {
double value_double = (value == NULL) ? (atof(value_str)) : (*(double *)value);
res = _kk_msg_set_property_value(devid, key, key_len, &value_double, sizeof(double));
}
break;
case KK_TSL_DATA_TYPE_TEXT:
case KK_TSL_DATA_TYPE_DATE: {
char *value_string = (value == NULL) ? (value_str) : (value);
res = _kk_msg_set_property_value(devid, key, key_len, value_string, strlen(value_string));
}
break;
default: {
res = FAIL_RETURN;
}
break;
}
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
return SUCCESS_RETURN;
}
static int _kk_msg_set_numberOrStr(kk_msg_set_type_t type, int devid, char *key, lite_cjson_t *root)
{
int res = 0;
......@@ -1114,8 +1171,8 @@ int kk_tsl_set_value(kk_tsl_set_t set, int devId, const char *identifier,
_kk_tsl_api_lock();
switch (set) {
case kk_tsl_set_property_value: {
res = _kk_msg_set_property_value(devId, (char *)identifier, strlen(identifier), (void *)value,
strlen(value));
res = _kk_tsl_set_property_value(devId, (char *)identifier, strlen(identifier), (void *)value,
(char*)value_str);
}
break;
case kk_tsl_set_event_output_value: {
......@@ -1261,26 +1318,14 @@ static int kk_tsl_post_property_start(_IN_ int devid, _OU_ void **handle)
return MEMORY_NOT_ENOUGH;
}
memset(dapi_property, 0, sizeof(dm_api_property_t));
/* Create Mutex */
dapi_property->mutex = kk_MutexCreate();
if (dapi_property->mutex == NULL) {
free(dapi_property);
return MEMORY_NOT_ENOUGH;
}
/* Set Devid */
dapi_property->devid = devid;
/* Init Json Object */
dapi_property->lite = lite_cjson_create_object();
if (dapi_property->lite == NULL) {
free(dapi_property->mutex);
free(dapi_property);
return FAIL_RETURN;
}
*handle = (void *)dapi_property;
return SUCCESS_RETURN;
}
......@@ -1391,7 +1436,7 @@ int kk_tsl_post_property_add(_IN_ void *handle, _IN_ char *identifier, _IN_ int
}
return ret;
}
int kk_tsl_post_property_end(_IN_ void **handle)
static int kk_tsl_post_property_end(_IN_ void *handle)
{
int res = 0;
char *payload = NULL;
......@@ -1400,30 +1445,19 @@ int kk_tsl_post_property_end(_IN_ void **handle)
if (handle == NULL) {
return INVALID_PARAMETER;
}
dapi_property = *((dm_api_property_t **)handle);
dapi_property = (dm_api_property_t *)handle;
payload = lite_cjson_print_unformatted(dapi_property->lite);
if (payload == NULL) {
lite_cjson_delete(dapi_property->lite);
if (dapi_property->mutex) {
kk_MutexDestroy(dapi_property->mutex);
}
free(dapi_property);
return MEMORY_NOT_ENOUGH;
}
printf("Current Property Post Payload, Length: %d, Payload: %s", strlen(payload), payload);
printf("Post Payload, Length: %d, Payload: %s\n", strlen(payload), payload);
res = dm_mgr_upstream_thing_property_post(dapi_property->devid, payload, strlen(payload));
free(payload);
lite_cjson_delete(dapi_property->lite);
if (dapi_property->mutex) {
kk_MutexDestroy(dapi_property->mutex);
}
free(dapi_property);
*handle = NULL;
free(payload);
dapi_property = NULL;
return res;
}
......@@ -1439,22 +1473,20 @@ int kk_tsl_post_property(int devId, const char *property_identifier)
_kk_tsl_api_unlock();
return FAIL_RETURN;
}
property_identifier_len = (property_identifier) ? (strlen((char *)property_identifier)) : (0);
res = kk_tsl_post_property_add(property_handle, (char *)property_identifier, property_identifier_len);
if (res != SUCCESS_RETURN) {
kk_tsl_post_property_end(&property_handle);
kk_tsl_post_property_end(property_handle);
_kk_tsl_api_unlock();
return FAIL_RETURN;
}
res = kk_tsl_post_property_end(&property_handle);
res = kk_tsl_post_property_end(property_handle);
if (res < SUCCESS_RETURN) {
_kk_tsl_api_unlock();
return FAIL_RETURN;
}
printf("\n[%s][%d]\n",__FUNCTION__,__LINE__);
_kk_tsl_api_unlock();
return SUCCESS_RETURN;
}
static int kk_tsl_event_output(_IN_ int devid, _IN_ char *identifier, _IN_ int identifier_len,
......
......@@ -84,7 +84,6 @@ typedef enum {
} kk_tsl_get_t;
typedef struct {
void *mutex;
int devid;
lite_cjson_item_t *lite;
} dm_api_property_t;
......
......@@ -60,6 +60,13 @@
#define KK_TSL_SPECIAL_EVENT_POST_IDENTIFIER "post"
#define KK_TSL_SPECIAL_EVENT_POST_METHOD "thing.event.property.post"
#define KK_TSL_GATAWAY_VERSION_IDENTIFIER "Version"
#define KK_TSL_GATAWAY_IP_IDENTIFIER "IPAddress"
#define KK_TSL_GATAWAY_MAC_IDENTIFIER "MACAddress"
#define KK_TSL_GATAWAY_PORT_IDENTIFIER "Port"
#define KK_TSL_GATAWAY_SN_IDENTIFIER "SN"
typedef enum {
KK_TSL_DATA_TARGET_SERVICE_INPUT_DATA,
KK_TSL_DATA_TARGET_SERVICE_OUTPUT_DATA
......
......@@ -104,7 +104,7 @@ static int _kk_tsl_float_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *va
float float_set = (value == NULL) ? (0) : (*(float *)value);
data_value->value_float = float_set;
printf("Current Float Value Be Set(Float): %f", data_value->value_float);
printf("Current Float Value Be Set(Float): %f\n", data_value->value_float);
return SUCCESS_RETURN;
}
......@@ -114,7 +114,7 @@ static int _kk_tsl_double_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *v
double double_set = (value == NULL) ? (0) : (*(double *)value);
data_value->value_double = double_set;
printf("Current Double Value Be Set(Double): %f", data_value->value_double);
printf("Current Double Value Be Set(Double): %f\n", data_value->value_double);
return SUCCESS_RETURN;
}
......@@ -133,7 +133,7 @@ static int _kk_tsl_text_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *val
if (res != SUCCESS_RETURN) {
return MEMORY_NOT_ENOUGH;
}
printf("Current Text Value Be Set(String): %s", data_value->value);
printf("Current Text Value Be Set(String): %s\n", data_value->value);
return SUCCESS_RETURN;
}
......@@ -145,7 +145,7 @@ static int _kk_tsl_enum_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *val
enum_set = (enum_set < 0) ? (0) : (enum_set);
data_value->value_int = enum_set;
printf("Current Enum Value Be Set(Enum): %d", data_value->value_int);
printf("Current Enum Value Be Set(Enum): %d\n", data_value->value_int);
return SUCCESS_RETURN;
}
......@@ -164,7 +164,7 @@ static int _kk_tsl_date_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *val
if (res != SUCCESS_RETURN) {
return MEMORY_NOT_ENOUGH;
}
printf("Current Date Value Be Set(String): %s", data_value->value);
printf("Current Date Value Be Set(String): %s\n", data_value->value);
return SUCCESS_RETURN;
}
......@@ -176,7 +176,7 @@ static int _kk_tsl_bool_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *val
int_set = (int_set == 0) ? (int_set) : ((int_set == 1) ? (int_set) : (0));
data_value->value_int = int_set;
printf("Current Bool Value Be Set(Bool): %d", data_value->value_int);
printf("Current Bool Value Be Set(Bool): %d\n", data_value->value_int);
return SUCCESS_RETURN;
}
......@@ -185,7 +185,7 @@ static int _kk_tsl_int_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void *valu
int int_set = (value == NULL) ? (0) : (*(int *)value);
data_value->value_int = int_set;
printf("Current Int Value Be Set(Int): %d", data_value->value_int);
printf("Current Int Value Be Set(Int): %d\n", data_value->value_int);
return SUCCESS_RETURN;
}
......@@ -206,7 +206,7 @@ static int _kk_tsl_array_text_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ voi
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
printf("Current Array Value Be Set(Text String), Index: %d, Value: %s", index,
printf("Current Array Value Be Set(Text String), Index: %d, Value: %s\n", index,
*((char **)(complex_array->value) + index));
return SUCCESS_RETURN;
......@@ -219,7 +219,7 @@ static int _kk_tsl_array_enum_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ voi
int int_set = (value == NULL) ? (0) : (*(int *)value);
*((int *)(complex_array->value) + index) = int_set;
printf("Current Array Value Be Set(Enum), Index: %d, Value: %d", index, *((int *)(complex_array->value) + index));
printf("Current Array Value Be Set(Enum), Index: %d, Value: %d\n", index, *((int *)(complex_array->value) + index));
return SUCCESS_RETURN;
}
......@@ -241,7 +241,7 @@ static int _kk_tsl_array_date_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ voi
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
printf("Current Array Value Be Set(Date String), Index: %d, Value: %s", index,
printf("Current Array Value Be Set(Date String), Index: %d, Value: %s\n", index,
*((char **)(complex_array->value) + index));
return SUCCESS_RETURN;
......@@ -588,7 +588,7 @@ static int _kk_tsl_array_bool_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ voi
int int_set = (value == NULL) ? (0) : (*(int *)value);
*((int *)(complex_array->value) + index) = int_set;
printf("Current Array Value Be Set(Bool), Index: %d, Value: %d", index, *((int *)(complex_array->value) + index));
printf("Current Array Value Be Set(Bool), Index: %d, Value: %d\n", index, *((int *)(complex_array->value) + index));
return SUCCESS_RETURN;
}
......@@ -600,7 +600,7 @@ static int _kk_tsl_array_int_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ void
int int_set = (value == NULL) ? (0) : (*(int *)value);
*((int *)(complex_array->value) + index) = int_set;
printf("Current Array Value Be Set(Int), Index: %d, Value: %d", index, *((int *)(complex_array->value) + index));
printf("Current Array Value Be Set(Int), Index: %d, Value: %d\n", index, *((int *)(complex_array->value) + index));
return SUCCESS_RETURN;
}
......@@ -612,7 +612,7 @@ static int _kk_tsl_array_float_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ vo
float float_set = (value == NULL) ? (0) : (*(float *)value);
*((float *)(complex_array->value) + index) = float_set;
printf("Current Array Value Be Set(Float), Index: %d, Value: %f", index,
printf("Current Array Value Be Set(Float), Index: %d, Value: %f\n", index,
*((float *)(complex_array->value) + index));
return SUCCESS_RETURN;
......@@ -625,7 +625,7 @@ static int _kk_tsl_array_double_set(_IN_ kk_tsl_data_value_t *data_value, _IN_ v
double double_set = (value == NULL) ? (0) : (*(double *)value);
*((double *)(complex_array->value) + index) = double_set;
printf("Current Array Value Be Set(Double), Index: %d, Value: %f", index,
printf("Current Array Value Be Set(Double), Index: %d, Value: %f\n", index,
*((double *)(complex_array->value) + index));
return SUCCESS_RETURN;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment