VOL-1236: BAL upgrade for 2.6 and support for Traffic Shaping
Change-Id: If12f914e5981b2eabfca90a70dbb0f0750a76c4b
diff --git a/src/bal_subscriber_terminal_hdlr.c b/src/bal_subscriber_terminal_hdlr.c
index 91fcfac..42dccc2 100755
--- a/src/bal_subscriber_terminal_hdlr.c
+++ b/src/bal_subscriber_terminal_hdlr.c
@@ -49,18 +49,11 @@
{
bcmbal_serial_number serial_num = {} ;
bcmbal_serial_number zero_serial_num = {};
- bcmbal_registration_id registration_id = {};
int has_serial_num = BCMOS_FALSE;
- int has_registration_id = BCMOS_FALSE;
char two_digit_buf[3];
two_digit_buf[2] = 0;
- ASFVOLT_LOG(ASFVOLT_DEBUG, "Before encoding,Vendor Id(%s),Vendor Specific Id(%s), Registration Id(%s)",
- onu_cfg->data->serial_number->vendor_id,
- onu_cfg->data->serial_number->vendor_specific,
- onu_cfg->data->registration_id);
-
char vendor_id[20];
memset(&vendor_id, 0, 20);
sprintf(vendor_id,"%2X%2X%2X%2X",
@@ -69,11 +62,6 @@
onu_cfg->data->serial_number->vendor_id[2],
onu_cfg->data->serial_number->vendor_id[3]);
onu_cfg->data->serial_number->vendor_id = vendor_id;
- ASFVOLT_LOG(ASFVOLT_DEBUG, "After encoding,Vendor Id(%s),Vendor Specific Id(%s), Registration Id(%s)",
- onu_cfg->data->serial_number->vendor_id,
- onu_cfg->data->serial_number->vendor_specific,
- onu_cfg->data->registration_id);
-
/* Vendor Id is totally 16 byte string and should be
send in hexadecimmal format */
for(idx=0; idx<2*sizeof(serial_num.vendor_id); idx+=2)
@@ -91,17 +79,6 @@
ASFVOLT_CFG_PROP_SET(sub_term_obj, subscriber_terminal, serial_number,
has_serial_num, serial_num);
- /* Registration ID is a string and should be given in hexadecimal format */
- for(idx=0; idx<strlen(onu_cfg->data->registration_id) && idx<2*sizeof(registration_id.arr); idx+=2)
- {
- memcpy(two_digit_buf, &onu_cfg->data->registration_id[idx], 2);
- registration_id.arr[idx>>1] = strtol(two_digit_buf, NULL, 16);
- has_registration_id = BCMOS_TRUE;
- }
-
- ASFVOLT_CFG_PROP_SET(sub_term_obj, subscriber_terminal, registration_id,
- has_registration_id, registration_id);
-
if (!memcmp(&serial_num, &zero_serial_num, sizeof(serial_num)))
skip_onu = BCMOS_TRUE;
}
@@ -111,14 +88,6 @@
if (!skip_onu)
{
-
- /*ASFVOLT_LOG(ASFVOLT_DEBUG, "Onu's(%d) Serial number %02x%02x%02x%2x%02x%02x%02x%02x",
- onu_cfg->key->sub_term_id,
- sub_term_obj.data->serial_number.vendor_id[0], sub_term_obj.data->serial_number.vendor_id[1],
- sub_term_obj.data->serial_number.vendor_id[2], sub_term_obj.data->serial_number.vendor_id[3],
- sub_term_obj.data->serial_number.vendor_specific[0], sub_term_obj.data->serial_number.vendor_specific[1],
- sub_term_obj.data->serial_number.vendor_specific[2], sub_term_obj.data->serial_number.vendor_specific[3]);*/
-
err = bcmbal_cfg_set(DEFAULT_ATERM_ID, &(sub_term_obj.hdr));
ASFVOLT_LOG(ASFVOLT_DEBUG,
@@ -255,8 +224,7 @@
* Function : bal_subscriber_terminal_cfg_get *
* Description : Get the subscriber terminal(ONU) configuration *
********************************************************************/
-uint32_t bal_subscriber_terminal_cfg_get(BalSubscriberTerminalKey *terminal_key,
- BalSubscriberTerminalCfg *onu_cfg)
+uint32_t bal_subscriber_terminal_cfg_get(BalSubscriberTerminalCfg *onu_cfg)
{
bcmos_errno err = BCM_ERR_OK;
@@ -268,20 +236,8 @@
"Processing subscriber terminal cfg get: %d",
onu_cfg->key->sub_term_id);
- if (terminal_key->has_sub_term_id &&
- terminal_key->has_intf_id)
- {
- key.sub_term_id = terminal_key->sub_term_id ;
- key.intf_id = terminal_key->intf_id ;
- }
- else
- {
- ASFVOLT_LOG(ASFVOLT_ERROR,
- "Invalid Key to handle subscriber terminal Cfg Get subscriber_terminal_id(%d), Interface ID(%d)",
- key.sub_term_id, key.intf_id);
-
- return BAL_ERRNO__BAL_ERR_PARM;
- }
+ key.sub_term_id = onu_cfg->key->sub_term_id ;
+ key.intf_id = onu_cfg->key->intf_id ;
/* init the API struct */
BCMBAL_CFG_INIT(&cfg, subscriber_terminal, key);
@@ -312,7 +268,73 @@
return BAL_ERRNO__BAL_ERR_INTERNAL;
}
- ASFVOLT_LOG(ASFVOLT_INFO,
- "To-Do. Send subscriber terminal details to Adapter");
+ ASFVOLT_LOG(ASFVOLT_INFO, "Get Subscriber cfg sent to OLT for Subscriber Id(%d) on Interface(%d)",
+ key.sub_term_id, key.intf_id);
+
+ onu_cfg->key->has_sub_term_id = BAL_ELEMENT_PRES;
+ onu_cfg->key->sub_term_id = cfg.key.sub_term_id;
+
+ onu_cfg->key->has_intf_id = BAL_ELEMENT_PRES;
+ onu_cfg->key->intf_id = cfg.key.intf_id;
+
+ onu_cfg->data->has_admin_state = BAL_ELEMENT_PRES;
+ onu_cfg->data->admin_state = cfg.data.admin_state;
+
+ onu_cfg->data->has_oper_status = BAL_ELEMENT_PRES;
+ onu_cfg->data->oper_status = cfg.data.oper_status;
+
+ onu_cfg->data->has_svc_port_id = BAL_ELEMENT_PRES;
+ onu_cfg->data->svc_port_id = cfg.data.svc_port_id;
+
+ onu_cfg->data->has_ds_tm = BAL_ELEMENT_PRES;
+ onu_cfg->data->ds_tm = cfg.data.ds_tm;
+
+ onu_cfg->data->has_us_tm = BAL_ELEMENT_PRES;
+ onu_cfg->data->us_tm = cfg.data.us_tm;
+
+ onu_cfg->data->has_sub_term_rate = BAL_ELEMENT_PRES;
+ onu_cfg->data->sub_term_rate = cfg.data.sub_term_rate;
+
+ char *password = malloc(sizeof(char)*MAX_CHAR_LENGTH*2);
+ memset(password, 0, MAX_CHAR_LENGTH*2);
+ strcpy(password,(const char *)cfg.data.password.arr);
+ onu_cfg->data->password = password;
+
+ char *registration_id = malloc(sizeof(char)*MAX_REGID_LENGTH);
+ memset(registration_id, 0, MAX_REGID_LENGTH);
+ strcpy(registration_id,(const char *)cfg.data.registration_id.arr);
+ onu_cfg->data->registration_id = registration_id;
+
+ BalSerialNumber *serialNum;
+ serialNum = malloc(sizeof(BalSerialNumber));
+ memset(serialNum, 0, sizeof(BalSerialNumber));
+ bal_serial_number__init(serialNum);
+ onu_cfg->data->serial_number = serialNum;
+
+ char *vendor_id = malloc(sizeof(char)*MAX_CHAR_LENGTH);
+ memset(vendor_id, 0, MAX_CHAR_LENGTH);
+ sprintf(vendor_id,"%c%c%c%c",
+ cfg.data.serial_number.vendor_id[0],
+ cfg.data.serial_number.vendor_id[1],
+ cfg.data.serial_number.vendor_id[2],
+ cfg.data.serial_number.vendor_id[3]);
+
+ onu_cfg->data->serial_number->vendor_id = vendor_id;
+
+ char *vendor_specific = malloc(sizeof(char)*MAX_CHAR_LENGTH);
+ memset(vendor_specific, 0, MAX_CHAR_LENGTH);
+ sprintf(vendor_specific,"%1X%1X%1X%1X%1X%1X%1X%1X",
+ cfg.data.serial_number.vendor_specific[0]>>4 & 0x0f,
+ cfg.data.serial_number.vendor_specific[0] & 0x0f,
+ cfg.data.serial_number.vendor_specific[1]>>4 & 0x0f,
+ cfg.data.serial_number.vendor_specific[1] & 0x0f,
+ cfg.data.serial_number.vendor_specific[2]>>4 & 0x0f,
+ cfg.data.serial_number.vendor_specific[2] & 0x0f,
+ cfg.data.serial_number.vendor_specific[3]>>4 & 0x0f,
+ cfg.data.serial_number.vendor_specific[3] & 0x0f);
+ onu_cfg->data->serial_number->vendor_specific = vendor_specific;
+
+ free(list_mem);
+
return BAL_ERRNO__BAL_ERR_OK;
}