Przeglądaj źródła

完善业务处理

Yu.Ding 2 dni temu
rodzic
commit
ea1fb648fc

+ 6 - 49
Modules/output_control/main.c

@@ -234,21 +234,6 @@ void ProcessReply( redisReply * pReply )
                 if(DEBUG)
                     printf("RLEAY: %s\n",cJSON_GetObjectItem(pJson, "type")->valuestring);
             }
-            // else if(strcmp(cJSON_GetObjectItem(pJson, "id")->valuestring, "gpio135") == 0)
-            // {
-            //     GPIO135_STATUS = get_gpio_type(cJSON_GetObjectItem(pJson, "type")->valuestring);
-            //     if(GPIO135_STATUS == GPIO_Off)
-            //     {
-            //         gpio_off_trigger();
-            //     }
-            //     else
-            //     {
-            //         gpio_on_trigger();
-            //     }
-                
-            //     if(DEBUG)
-            //         printf("gpio135: %s\n",cJSON_GetObjectItem(pJson, "type")->valuestring);
-            // }
         }else{
             printf( "parse failed!\n");
         }
@@ -294,58 +279,30 @@ void *gpio_status()
         gpioFlashTime++;
 
         if(gpioFlashTime == 47 || gpioFlashTime == 143){
-            // if(GPIO135_STATUS == GPIO_On)
-            //     system("echo 0 > /sys/class/gpio/gpio134/value;echo 0 > /sys/class/gpio/gpio135/value");
-            // else if(GPIO135_STATUS == GPIO_Off)
-            //     system("echo 1 > /sys/class/gpio/gpio134/value;echo 1 > /sys/class/gpio/gpio135/value");
             if(GPIO67_STATUS == GPIO_On)
-                system("echo 1 > /sys/class/gpio/gpio67/value");
+                system("echo 1 > /sys/class/gpio/gpio112/value");
             else if(GPIO67_STATUS == GPIO_Off)
-                system("echo 0 > /sys/class/gpio/gpio67/value");
+                system("echo 0 > /sys/class/gpio/gpio112/value");
         }
 
         if(gpioFlashTime % 39 == 0){
-            // if(GPIO135_STATUS == GPIO_Simultaneously){
-            //     gpioFlashTag1 = !gpioFlashTag1;
-            //     if(gpioFlashTag1){
-            //         system("echo 0 > /sys/class/gpio/gpio134/value;echo 0 > /sys/class/gpio/gpio135/value");
-            //     }else{
-            //         system("echo 1 > /sys/class/gpio/gpio134/value;echo 1 > /sys/class/gpio/gpio135/value");
-            //     }
-            // }
-            // if(GPIO135_STATUS == GPIO_Alternately){
-            //     gpioFlashTag1 = !gpioFlashTag1;
-            //     if(gpioFlashTag1){
-            //         system("echo 1 > /sys/class/gpio/gpio134/value;echo 0 > /sys/class/gpio/gpio135/value");
-            //     }else{
-            //         system("echo 0 > /sys/class/gpio/gpio134/value;echo 1 > /sys/class/gpio/gpio135/value");
-            //     }
-            // }
             if(GPIO67_STATUS == GPIO_Fast){
                 gpioFlashTag2 = !gpioFlashTag2;
                 if(gpioFlashTag2){
-                    system("echo 0 > /sys/class/gpio/gpio67/value");
+                    system("echo 0 > /sys/class/gpio/gpio112/value");
                 }else{
-                    system("echo 1 > /sys/class/gpio/gpio67/value");
+                    system("echo 1 > /sys/class/gpio/gpio112/value");
                 }
             }
         }
 
         if(gpioFlashTime % 99 == 0){
-            // if(GPIO135_STATUS == GPIO_Slow){
-            //     gpioFlashTag1 = !gpioFlashTag1;
-            //     if(gpioFlashTag1){
-            //         system("echo 0 > /sys/class/gpio/gpio134/value;echo 0 > /sys/class/gpio/gpio135/value");
-            //     }else{
-            //         system("echo 1 > /sys/class/gpio/gpio134/value;echo 1 > /sys/class/gpio/gpio135/value");
-            //     }
-            // }
             if(GPIO67_STATUS == GPIO_Slow){
                 gpioFlashTag2 = !gpioFlashTag2;
                 if(gpioFlashTag2){
-                    system("echo 0 > /sys/class/gpio/gpio67/value");
+                    system("echo 0 > /sys/class/gpio/gpio112/value");
                 }else{
-                    system("echo 1 > /sys/class/gpio/gpio67/value");
+                    system("echo 1 > /sys/class/gpio/gpio112/value");
                 }
             }
         }

+ 177 - 0
Modules/service_process/log.c

@@ -0,0 +1,177 @@
+/*
+ * Copyright (c) 2020 rxi
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include "log.h"
+
+#define MAX_CALLBACKS 32
+
+typedef struct {
+  log_LogFn fn;
+  void *udata;
+  int level;
+} Callback;
+
+static struct {
+  void *udata;
+  log_LockFn lock;
+  int level;
+  bool quiet;
+  Callback callbacks[MAX_CALLBACKS];
+} L;
+
+
+static const char *level_strings[] = {
+  "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL"
+};
+
+#ifdef LOG_USE_COLOR
+static const char *level_colors[] = {
+  "\x1b[94m", "\x1b[36m", "\x1b[32m", "\x1b[33m", "\x1b[31m", "\x1b[35m"
+};
+#endif
+
+
+static void stdout_callback(log_Event *ev) {
+  char buf[16];
+  buf[strftime(buf, sizeof(buf), "%H:%M:%S", ev->time)] = '\0';
+#ifdef LOG_USE_COLOR
+  fprintf(
+    ev->udata, "%s %s%-5s\x1b[0m \x1b[90m%s:%d:\x1b[0m ",
+    buf, level_colors[ev->level], level_strings[ev->level],
+    ev->file, ev->line);
+#else
+  fprintf(
+    ev->udata, "%s %-5s %s:%d: ",
+    buf, level_strings[ev->level], ev->file, ev->line);
+#endif
+  vfprintf(ev->udata, ev->fmt, ev->ap);
+  fprintf(ev->udata, "\n");
+  fflush(ev->udata);
+}
+
+
+static void file_callback(log_Event *ev) {
+  char buf[64];
+  buf[strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", ev->time)] = '\0';
+  fprintf(ev->udata, "%s,",buf);
+//  fprintf(
+//    ev->udata, "%s %-5s %s:%d: ",
+//    buf, level_strings[ev->level], ev->file, ev->line);
+  vfprintf(ev->udata, ev->fmt, ev->ap);
+  fprintf(ev->udata, "\n");
+  fflush(ev->udata);
+  fdatasync(fileno(ev->udata));
+}
+
+
+static void lock(void)   {
+  if (L.lock) { L.lock(true, L.udata); }
+}
+
+
+static void unlock(void) {
+  if (L.lock) { L.lock(false, L.udata); }
+}
+
+
+const char* log_level_string(int level) {
+  return level_strings[level];
+}
+
+
+void log_set_lock(log_LockFn fn, void *udata) {
+  L.lock = fn;
+  L.udata = udata;
+}
+
+
+void log_set_level(int level) {
+  L.level = level;
+}
+
+
+void log_set_quiet(bool enable) {
+  L.quiet = enable;
+}
+
+
+int log_add_callback(log_LogFn fn, void *udata, int level) {
+  for (int i = 0; i < MAX_CALLBACKS; i++) {
+    if (!L.callbacks[i].fn) {
+      L.callbacks[i] = (Callback) { fn, udata, level };
+      return 0;
+    }
+  }
+  return -1;
+}
+
+
+int log_add_fp(FILE *fp, int level) {
+  return log_add_callback(file_callback, fp, level);
+}
+
+void log_init_callback()
+{
+  for (int i = 0; i < MAX_CALLBACKS; i++) {
+      L.callbacks[i].fn = NULL;
+  }
+}
+
+
+static void init_event(log_Event *ev, void *udata) {
+  if (!ev->time) {
+    time_t t = time(NULL);
+    ev->time = localtime(&t);
+  }
+  ev->udata = udata;
+}
+
+
+void log_log(int level, const char *file, int line, const char *fmt, ...) {
+  log_Event ev = {
+    .fmt   = fmt,
+    .file  = file,
+    .line  = line,
+    .level = level,
+  };
+
+  lock();
+
+  if (!L.quiet && level >= L.level) {
+    init_event(&ev, stderr);
+    va_start(ev.ap, fmt);
+    stdout_callback(&ev);
+    va_end(ev.ap);
+  }
+
+  for (int i = 0; i < MAX_CALLBACKS && L.callbacks[i].fn; i++) {
+    Callback *cb = &L.callbacks[i];
+    if (level >= cb->level) {
+      init_event(&ev, cb->udata);
+      va_start(ev.ap, fmt);
+      cb->fn(&ev);
+      va_end(ev.ap);
+    }
+  }
+
+  unlock();
+}

+ 51 - 0
Modules/service_process/log.h

@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2020 rxi
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the MIT license. See `log.c` for details.
+ */
+
+#ifndef LOG_H
+#define LOG_H
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <time.h>
+#include <unistd.h>
+
+#define LOG_VERSION "0.1.0"
+
+typedef struct {
+  va_list ap;
+  const char *fmt;
+  const char *file;
+  struct tm *time;
+  void *udata;
+  int line;
+  int level;
+} log_Event;
+
+typedef void (*log_LogFn)(log_Event *ev);
+typedef void (*log_LockFn)(bool lock, void *udata);
+
+enum { LOG_TRACE, LOG_DEBUG, LOG_INFO, LOG_WARN, LOG_ERROR, LOG_FATAL };
+
+#define log_trace(...) log_log(LOG_TRACE, __FILE__, __LINE__, __VA_ARGS__)
+#define log_debug(...) log_log(LOG_DEBUG, __FILE__, __LINE__, __VA_ARGS__)
+#define log_info(...)  log_log(LOG_INFO,  __FILE__, __LINE__, __VA_ARGS__)
+#define log_warn(...)  log_log(LOG_WARN,  __FILE__, __LINE__, __VA_ARGS__)
+#define log_error(...) log_log(LOG_ERROR, __FILE__, __LINE__, __VA_ARGS__)
+#define log_fatal(...) log_log(LOG_FATAL, __FILE__, __LINE__, __VA_ARGS__)
+
+const char* log_level_string(int level);
+void log_set_lock(log_LockFn fn, void *udata);
+void log_set_level(int level);
+void log_set_quiet(bool enable);
+int log_add_callback(log_LogFn fn, void *udata, int level);
+int log_add_fp(FILE *fp, int level);
+void log_init_callback();
+
+void log_log(int level, const char *file, int line, const char *fmt, ...);
+
+#endif

+ 52 - 475
Modules/service_process/main.c

@@ -22,12 +22,11 @@
 
 //KEYS
 #define UNKEY   0
-#define KEY1    1
-#define KEY2    2
-#define KEY3    3
-#define KEY4_3  4
-#define KEY4_10 5
-#define DKEY    6
+#define KEY     1
+#define KEY2_3  2
+#define KEY2_10 3
+#define OPEN    4
+#define CLOSED   4
 
 //SCHEDULE STATE
 #define ERROR	-1
@@ -74,9 +73,7 @@
 #define STA         "SIP STATE"
 #define SCHED		"SCHEDULE"
 
-#define GPIO_130     "gpio130"
-#define GPIO_RELAY   "gpio67"
-#define GPIO_LED     "gpio135"
+#define GPIO_RELAY   "gpio112"
 #define VAR_IP      "${ip}"
 #define VAR_MAC     "${mac}"
 #define VAR_UA      "${ua}"
@@ -992,21 +989,6 @@ void ProcessReply( redisReply * pReply )
                 writeLog( STA, "CALL ESTABLISHED", "incoming" );
                 //amplifier_switch(TRUE);
                 BARESIP_STATUS = INUSE;
-                switch(CURRENT_KEY){
-                    case KEY1:
-                        key1LedStatus = Led_Slow;
-                        key2LedStatus = Led_On;
-                        break;
-                    case KEY2:
-                        key1LedStatus = Led_On;
-                        key2LedStatus = Led_Slow;
-                        break;
-                    case UNKEY:
-                    case DKEY:
-                        key1LedStatus = Led_Slow;
-                        key2LedStatus = Led_Slow;
-                        break;
-                }
                 answeredTrigger();
             }
             else if(strcmp(cJSON_GetObjectItem(pJson, "direction")->valuestring, "outgoing") == 0 &&
@@ -1016,21 +998,6 @@ void ProcessReply( redisReply * pReply )
                 writeLog( STA, "CALL ESTABLISHED", "outgoing" );
                 //amplifier_switch(TRUE);
                 BARESIP_STATUS = INUSE;
-                switch(CURRENT_KEY){
-                    case KEY1:
-                        key1LedStatus = Led_Slow;
-                        key2LedStatus = Led_On;
-                        break;
-                    case KEY2:
-                        key1LedStatus = Led_On;
-                        key2LedStatus = Led_Slow;
-                        break;
-                    case UNKEY:
-                    case DKEY:
-                        key1LedStatus = Led_Slow;
-                        key2LedStatus = Led_Slow;
-                        break;
-                }
                 answeredTrigger();
             }
             else if(strcmp(cJSON_GetObjectItem(pJson, "direction")->valuestring, "incoming") == 0 &&
@@ -1041,18 +1008,6 @@ void ProcessReply( redisReply * pReply )
                 writeLog( STA, "CALL CLOSED", cJSON_GetObjectItem(pJson, "param")->valuestring );
                 if(BARESIP_STATUS != OFFLINE){
                     BARESIP_STATUS = IDLE;
-                    switch(CURRENT_KEY){
-                        case KEY1:
-                            key1LedStatus = Led_On;
-                            break;
-                        case KEY2:
-                            key2LedStatus = Led_On;
-                            break;
-                        case UNKEY:
-                            key1LedStatus = Led_On;
-                            key2LedStatus = Led_On;
-                            break;
-                    }
                 }
                 if(strlen(DTMF_STRING))
                     memset(DTMF_STRING, 0, sizeof(DTMF_STRING));
@@ -1077,18 +1032,6 @@ void ProcessReply( redisReply * pReply )
                 writeLog( STA, "CALL CLOSED", cJSON_GetObjectItem(pJson, "param")->valuestring );
                 if(BARESIP_STATUS != OFFLINE){
                     BARESIP_STATUS = IDLE;
-                    switch(CURRENT_KEY){
-                        case KEY1:
-                            key1LedStatus = Led_On;
-                            break;
-                        case KEY2:
-                            key2LedStatus = Led_On;
-                            break;
-                        case DKEY:
-                            key1LedStatus = Led_On;
-                            key2LedStatus = Led_On;
-                            break;
-                    }
                 }
                 CURRENT_KEY = UNKEY;
                 if(strlen(DTMF_STRING))
@@ -1115,8 +1058,6 @@ void ProcessReply( redisReply * pReply )
                 if(BARESIP_STATUS == IDLE)
                 {
                     BARESIP_STATUS = RING;
-                    key1LedStatus = Led_Fast;
-                    key2LedStatus = Led_Fast;
                     CURRENT_KEY = UNKEY;
                     incomingTrigger();
                 }
@@ -1139,14 +1080,6 @@ void ProcessReply( redisReply * pReply )
                 if(BARESIP_STATUS == IDLE || BARESIP_STATUS == DIALING)
                 {
                     BARESIP_STATUS = RINGING;
-                    switch(CURRENT_KEY){
-                        case KEY1:
-                            key1LedStatus = Led_Fast;
-                            break;
-                        case KEY2:
-                            key2LedStatus = Led_Fast;
-                            break;
-                    }
                     outgoingTrigger();
                 }
 				memset(callerid, 0, sizeof(callerid));
@@ -1173,8 +1106,6 @@ void ProcessReply( redisReply * pReply )
                 if(BARESIP_STATUS == OFFLINE || BARESIP_STATUS == DIALING || strcmp(cJSON_GetObjectItem(pJson, "class")->valuestring, "init register") == 0)
                 {
                     BARESIP_STATUS = IDLE;
-                    key1LedStatus = Led_On;
-                    key2LedStatus = Led_On;
                     CURRENT_CALLS = 0;
                 }
 				if(cJSON_GetObjectItem(pJson, "accountaor") != NULL)
@@ -1265,8 +1196,6 @@ void ProcessReply( redisReply * pReply )
 							ACCOUNT1_REG = REGISTER_FAIL;
                             if( ACCOUNT2_REG == REGISTER_FAIL && ACCOUNT3_REG == REGISTER_FAIL && ACCOUNTP2P_REG == REGISTER_FAIL ){
                                 BARESIP_STATUS = OFFLINE;
-                                key1LedStatus = Led_Off;
-                                key2LedStatus = Led_Off;
                             }
                             sprintf(strtmp,"Primary Account REGISTER FAILED <%s>",accountaor1);
                             writeLog( STA, strtmp, cJSON_GetObjectItem(pJson, "param")->valuestring );
@@ -1290,8 +1219,6 @@ void ProcessReply( redisReply * pReply )
                             ACCOUNT2_REG = REGISTER_FAIL;
                             if( ACCOUNT1_REG == REGISTER_FAIL && ACCOUNT3_REG == REGISTER_FAIL && ACCOUNTP2P_REG == REGISTER_FAIL ){
                                 BARESIP_STATUS = OFFLINE;
-                                key1LedStatus = Led_Off;
-                                key2LedStatus = Led_Off;
                             }
                             sprintf(strtmp,"Secondary Account-1 REGISTER FAILED <%s>",accountaor2);
                             writeLog( STA, strtmp, cJSON_GetObjectItem(pJson, "param")->valuestring );
@@ -1315,8 +1242,6 @@ void ProcessReply( redisReply * pReply )
                             ACCOUNT3_REG = REGISTER_FAIL;
                             if( ACCOUNT1_REG == REGISTER_FAIL && ACCOUNT2_REG == REGISTER_FAIL && ACCOUNTP2P_REG == REGISTER_FAIL ){
                                 BARESIP_STATUS = OFFLINE;
-                                key1LedStatus = Led_Off;
-                                key2LedStatus = Led_Off;
                             }
                             sprintf(strtmp,"Secondary Account-2 REGISTER FAILED <%s>",accountaor3);
                             writeLog( STA, strtmp, cJSON_GetObjectItem(pJson, "param")->valuestring );
@@ -1331,8 +1256,6 @@ void ProcessReply( redisReply * pReply )
             {
                 //如果是注册失败熄灭指示灯
                 BARESIP_STATUS = OFFLINE;
-                key1LedStatus = Led_Off;
-                key2LedStatus = Led_Off;
                 ACCOUNT1_REG = REGISTER_FAIL;
                 ACCOUNT2_REG = REGISTER_FAIL;
                 ACCOUNT3_REG = REGISTER_FAIL;
@@ -1347,8 +1270,6 @@ void ProcessReply( redisReply * pReply )
                     if(strcmp(p2penable,"yes") == 0)
                     {
                         BARESIP_STATUS = IDLE;
-                        key1LedStatus = Led_On;
-                        key2LedStatus = Led_On;
                         if(ACCOUNTP2P_REG == REGISTER_FAIL)
                         {
                             ACCOUNTP2P_REG = REGISTER_OK;
@@ -1430,13 +1351,13 @@ void keyAction(int key)
         printf( "BARESIP_STATUS [%d]\n", BARESIP_STATUS );
 
     switch(key){
-        case KEY1://处理按键1动作
-            if( CURRENT_KEY == UNKEY || CURRENT_KEY == KEY1 )
+        case KEY://处理按键动作
+            if( CURRENT_KEY == UNKEY || CURRENT_KEY == KEY )
             {
                 switch(BARESIP_STATUS)
                 {
                     case IDLE:
-                        CURRENT_KEY = KEY1;
+                        CURRENT_KEY = KEY;
                         BARESIP_STATUS = DIALING;
                         GetCmdValue(SPK_CONF, "intercom:onekey_1_num", onekey_num, sizeof(onekey_num));
                         GetCmdValue(SPK_CONF, "intercom:onekey_1_line", onekey_line, sizeof(onekey_line));
@@ -1519,7 +1440,7 @@ void keyAction(int key)
                             printf( "dial [%s]\n", cmd );
                         control_cmd(channel, cmd);
                         sprintf(strtmp, "%s <%s>", onekey_num, onekey_line);
-                        writeLog( FUN, "KEY1 Call", strtmp );
+                        writeLog( FUN, "KEY Call", strtmp );
                         break;
                     case RINGING:
                     case INUSE:
@@ -1529,161 +1450,16 @@ void keyAction(int key)
                             if(DEBUG)
                                 printf( "hangup call\n" );
                             control_cmd(channel, cmd);
-                            writeLog( FUN, "KEY1 Hangup", "" );
+                            writeLog( FUN, "KEY Hangup", "" );
                         }
                         break;
                     case RING:
-                        CURRENT_KEY = KEY1;
+                        CURRENT_KEY = KEY;
                         strcpy(cmd,"{\"cmd\":\"accept\",\"data\":\"\"}");
                         if(DEBUG)
                             printf( "answer call\n" );
                         control_cmd(channel, cmd); 
-                        writeLog( FUN, "KEY1 Answer", "" );
-                        break;
-                    case OFFLINE:
-                        GetCmdValue(SPK_CONF, "call_action_url:unregistered_enable", enable, sizeof(enable));
-                        if(strcmp(enable,"yes") == 0)
-                        {
-                            GetCmdValue(SPK_CONF, "call_action_url:unregistered_url", url, sizeof(url));
-                            if(strstr(url,VAR_IP))
-                            {
-                                if(get_ip(ipaddr))
-                                    strcpy(url, strrpl(url, VAR_IP, ipaddr));
-                            }
-                            if(strstr(url,VAR_MAC))
-                            {
-                                if(get_mac(macaddr))
-                                    strcpy(url, strrpl(url, VAR_MAC, macaddr));
-                            }
-                            if(strstr(url,VAR_UA))
-                            {
-                                GetCmdValue(SPK_CONF, "intercom:onekey_line", onekey_line, sizeof(onekey_line));
-                                sprintf(strtmp,"%s:username",onekey_line);
-                                GetCmdValue(SPK_CONF, strtmp, account, sizeof(account));
-                                strcpy(url, strrpl(url, VAR_UA, account));
-                            }
-                            if(strstr(url,VAR_NUM))
-                            {
-                                GetCmdValue(SPK_CONF, "intercom:onekey_num", onekey_num, sizeof(onekey_num));
-                                strcpy(url, strrpl(url, VAR_NUM, onekey_num));
-                            }
-                            action_url(url);
-                            writeLog(FUN, "HTTP Request", url);
-                        }
-                        break;
-                }
-            }
-            break;
-        case KEY2://处理按键2动作
-            if( CURRENT_KEY == UNKEY || CURRENT_KEY == KEY2 )
-            {
-                switch(BARESIP_STATUS)
-                {
-                    case IDLE:
-                        CURRENT_KEY = KEY2;
-                        BARESIP_STATUS = DIALING;
-                        system("/app/ispeaker-service/bin/ispeakerctl stop_music");
-                        GetCmdValue(SPK_CONF, "intercom:onekey_2_num", onekey_num, sizeof(onekey_num));
-                        GetCmdValue(SPK_CONF, "intercom:onekey_2_line", onekey_line, sizeof(onekey_line));
-                        if(strlen(onekey_num) == 0) 
-                        {
-                            BARESIP_STATUS = IDLE;
-                            break;
-                        }
-                        get_line(line_id);
-                        if(strcmp(onekey_line,"auto") == 0)
-                        {
-                            if(DEBUG)
-                                printf("ACCOUNT1 is %d, ACCOUNT2 is %d, ACCOUNT3 is %d\n",ACCOUNT1_REG,ACCOUNT2_REG,ACCOUNT3_REG);
-                            if(ACCOUNT1_REG == REGISTER_OK)
-                            {
-                                if(line_id[1] == -1)
-                                {
-                                    BARESIP_STATUS = IDLE;
-                                    break;
-                                }
-                                sprintf(cmd,"{\"cmd\":\"dial\",\"data\":\"%s %d\"}",onekey_num, line_id[1]);
-                            }
-                            else if(ACCOUNT2_REG == REGISTER_OK)
-                            {
-                                if(line_id[2] == -1)
-                                {
-                                    BARESIP_STATUS = IDLE;
-                                    break;
-                                }
-                                sprintf(cmd,"{\"cmd\":\"dial\",\"data\":\"%s %d\"}",onekey_num, line_id[2]);
-                            }
-                            else if(ACCOUNT3_REG == REGISTER_OK)
-                            {
-                                if(line_id[3] == -1)
-                                {
-                                    BARESIP_STATUS = IDLE;
-                                    break;
-                                }
-                                sprintf(cmd,"{\"cmd\":\"dial\",\"data\":\"%s %d\"}",onekey_num, line_id[3]);
-                            }
-                            else
-                            {
-                                BARESIP_STATUS = IDLE;
-                                break;
-                            }
-                        }
-                        else if (strcmp(onekey_line, "account_info_1") == 0)
-                        {
-                            if(line_id[1] == -1 || ACCOUNT1_REG != REGISTER_OK)
-                            {
-                                BARESIP_STATUS = IDLE;
-                                break;
-                            }
-                            sprintf(cmd,"{\"cmd\":\"dial\",\"data\":\"%s %d\"}",onekey_num, line_id[1]);
-                        }
-                        else if (strcmp(onekey_line, "account_info_2") == 0)
-                        {
-                            if(line_id[2] == -1 || ACCOUNT2_REG != REGISTER_OK)
-                            {
-                                BARESIP_STATUS = IDLE;
-                                break;
-                            }
-                            sprintf(cmd,"{\"cmd\":\"dial\",\"data\":\"%s %d\"}",onekey_num, line_id[2]);
-                        }
-                        else if (strcmp(onekey_line, "account_info_3") == 0)
-                        {
-                            if(line_id[3] == -1 || ACCOUNT3_REG != REGISTER_OK)
-                            {
-                                BARESIP_STATUS = IDLE;
-                                break;
-                            }
-                            sprintf(cmd,"{\"cmd\":\"dial\",\"data\":\"%s %d\"}",onekey_num, line_id[3]);
-                        }
-                        else if(strcmp(onekey_line,"p2p") == 0)
-                        {
-                            sprintf(cmd,"{\"cmd\":\"dial\",\"data\":\"%s\"}",onekey_num);
-                        }
-
-                        if(DEBUG)
-                            printf( "dial [%s]\n", cmd );
-                        control_cmd(channel, cmd);
-                        sprintf(strtmp, "%s <%s>", onekey_num, onekey_line);
-                        writeLog( FUN, "KEY2 Call", strtmp );
-                        break;
-                    case RINGING:
-                    case INUSE:
-                        GetCmdValue(SPK_CONF, "intercom:repress_2_cancel", repress_cancel, sizeof(repress_cancel));
-                        if(strcmp(repress_cancel, "yes") == 0){
-                            strcpy(cmd,"{\"cmd\":\"hangup\",\"data\":\"\"}");
-                            if(DEBUG)
-                                printf( "hangup call\n" );
-                            control_cmd(channel, cmd);
-                            writeLog( FUN, "KEY2 Hangup", "" );
-                        }
-                        break;
-                    case RING:
-                        CURRENT_KEY = KEY2;
-                        strcpy(cmd,"{\"cmd\":\"accept\",\"data\":\"\"}");
-                        if(DEBUG)
-                            printf( "answer call\n" );
-                        control_cmd(channel, cmd);
-                        writeLog( FUN, "KEY2 Answer", "" );
+                        writeLog( FUN, "KEY Answer", "" );
                         break;
                     case OFFLINE:
                         GetCmdValue(SPK_CONF, "call_action_url:unregistered_enable", enable, sizeof(enable));
@@ -1719,17 +1495,13 @@ void keyAction(int key)
                 }
             }
             break;
-        case KEY3:
+        case KEY2_10:
             system("/etc/scripts/play_rebooting.sh");
             system("rm -f /oem/.userdata && /sbin/reboot");
             break;
-        case KEY4_3:
+        case KEY2_3:
             PlayIP();
             break;
-        case KEY4_10:
-            system("/etc/scripts/play_rebooting.sh 1");
-            system("/sbin/reboot");
-            break;
     }
 }
 
@@ -1750,74 +1522,6 @@ void *checkReg()
 	regcount = 0;
 	iniparser_freedict(ini);
 }
-
-//根据不同的业务状态点灯
-void *led_status()
-{
-    int ledFlashTime = 0,led1FlashTag1 = 0,led1FlashTag2 = 0,led2FlashTag1 = 0,led2FlashTag2 = 0, count = 0;
-	pthread_t thread1;
-    while(1)
-    {
-        usleep(10 * 1000);
-        /*	led flash controller	*/
-        ledFlashTime++;
-
-        if(ledFlashTime == 47 || ledFlashTime == 143){
-            if(key1LedStatus == Led_On)
-                system("echo 0 > /sys/class/gpio/gpio130/value");
-            else if(key1LedStatus == Led_Off)
-                system("echo 1 > /sys/class/gpio/gpio130/value");
-            if(key2LedStatus == Led_On)
-                system("echo 0 > /sys/class/gpio/gpio131/value");
-            else if(key2LedStatus == Led_Off)
-                system("echo 1 > /sys/class/gpio/gpio131/value");
-        }
-
-        if(ledFlashTime % 19 == 0){
-            if(key1LedStatus == Led_Fast){
-                led1FlashTag1 = !led1FlashTag1;
-                if(led1FlashTag1){
-                    system("echo 0 > /sys/class/gpio/gpio130/value");
-                }else{
-                    system("echo 1 > /sys/class/gpio/gpio130/value");
-                }
-            }
-            if(key2LedStatus == Led_Fast){
-                led2FlashTag1 = !led2FlashTag1;
-                if(led2FlashTag1){
-                    system("echo 0 > /sys/class/gpio/gpio131/value");
-                }else{
-                    system("echo 1 > /sys/class/gpio/gpio131/value");
-                }
-            }
-        }
-
-        if(ledFlashTime % 99 == 0){
-            if(key1LedStatus == Led_Slow){
-                led1FlashTag2 = !led1FlashTag2;
-                if(led1FlashTag2){
-                    system("echo 0 > /sys/class/gpio/gpio130/value");
-                }else{
-                    system("echo 1 > /sys/class/gpio/gpio130/value");
-                }
-            }
-            if(key2LedStatus == Led_Slow){
-                led2FlashTag2 = !led2FlashTag2;
-                if(led2FlashTag2){
-                    system("echo 0 > /sys/class/gpio/gpio131/value");
-                }else{
-                    system("echo 1 > /sys/class/gpio/gpio131/value");
-                }
-            }
-        }
-            
-        /*	restart the led flash loop	*/
-        if(ledFlashTime == 200)
-        {
-            ledFlashTime = 0;
-        }
-    }
-}
                         
 void reset_vlcInfo(int id)
 {
@@ -2226,9 +1930,9 @@ void *handleDateTime()
 
 		if(pTM->tm_sec == 0)
 		{
-            year = pTM->tm_year + 1900;
-			month = pTM->tm_mon + 1;
-            schedule(year, month, pTM->tm_mday, pTM->tm_hour, pTM->tm_min, pTM->tm_wday);
+            // year = pTM->tm_year + 1900;
+			// month = pTM->tm_mon + 1;
+            // schedule(year, month, pTM->tm_mday, pTM->tm_hour, pTM->tm_min, pTM->tm_wday);
 			count ++;
 			if(count > 120)
 			{
@@ -2408,8 +2112,8 @@ void sip_reg_status_init()
 
 const int init()
 {
-    int ret_thrd1,ret_thrd2,ret_thrd3,ret_thrd4,ret_thrd5;
-    pthread_t thread1, thread2, thread3, thread4, thread5;
+    int ret_thrd1,ret_thrd2,ret_thrd3,ret_thrd4;
+    pthread_t thread1, thread2, thread3, thread4;
 
     redisClient = create_redis_pool_client(unix_socket_path);
 
@@ -2423,32 +2127,26 @@ const int init()
         printf("create thread1 baresip_status failed\n");
         return FALSE;
     }
-    //启动线程根据不同的业务状态点亮状态指示灯
-    ret_thrd2 = pthread_create(&thread2, NULL, led_status, NULL);
-    if (ret_thrd2 != 0) {
-        printf("create thread2 led_status failed\n");
-        return FALSE;
-    }
 
     //启动日志记录线程
-    ret_thrd3 = pthread_create(&thread3, NULL, write_opnlog, NULL);
-    if (ret_thrd3 != 0) {
-        printf("create thread3 write_opnlog failed\n");
+    ret_thrd2 = pthread_create(&thread2, NULL, write_opnlog, NULL);
+    if (ret_thrd2 != 0) {
+        printf("create thread2 write_opnlog failed\n");
         return FALSE;
     }
 
     //启动系统时间显示线程
-    ret_thrd4 = pthread_create(&thread4, NULL, handleDateTime, NULL);
-    if (ret_thrd4 != 0)
+    ret_thrd3 = pthread_create(&thread3, NULL, handleDateTime, NULL);
+    if (ret_thrd3 != 0)
     {
-        printf("create thread4 handleDateTime failed\n");
+        printf("create thread3 handleDateTime failed\n");
         return FALSE;
     }
 
     //启动线程订阅音量设置
-    ret_thrd5 = pthread_create(&thread5, NULL, get_volume_info, NULL);
-    if (ret_thrd5 != 0) {
-        printf("create thread5 get_volume_info failed\n");
+    ret_thrd4 = pthread_create(&thread4, NULL, get_volume_info, NULL);
+    if (ret_thrd4 != 0) {
+        printf("create thread4 get_volume_info failed\n");
         return FALSE;
     }
     
@@ -2471,7 +2169,7 @@ int main(int argc, char *argv[]){
         exit( -1 );
     }
 
-    /* SWITCH */
+    /* BUTTON */
     switch_fd = open("/sys/class/gpio/gpio111/value", O_RDONLY);
     read(switch_fd, buf, sizeof(buf));
     lseek(switch_fd, 0, SEEK_SET);
@@ -2496,7 +2194,7 @@ int main(int argc, char *argv[]){
 
         if(ret == 0)
             continue;
-        /*SWITCH*/
+        /*BUTTON*/
         if( fdset[0].revents & POLLPRI )
         {
             count = 0;
@@ -2510,151 +2208,30 @@ int main(int argc, char *argv[]){
             }
             // printf("zero counts: %d\n", count);
             if (count >= 70) {
-                GetCmdValue(SPK_CONF, "intercom:type", type, sizeof(type));
-                GetCmdValue(SPK_CONF, "trigger:input", input, sizeof(input));
-                if(strcmp(type,"key") == 0)
-                {
-                    playBeep();
+                playBeep();
+                if(DEBUG)
                     printf("KEY DOWN\n");
-                    writeLog(BTN, "KEY", "Click");
-
-                    char action[8],url[256];
-                    GetCmdValue(SPK_CONF, "intercom:key_action", action, sizeof(action));
-                    if(strcmp(action,"call") == 0)
-                    {
-                        outgoingCall(KEY);
-                    }
-                    else if(strcmp(action,"http") == 0)
-                    {
-                        GetCmdValue(SPK_CONF, "intercom:http_url", url, sizeof(url));
-                        action_url(url);
-                        writeLog(FUN, "KEY HTTP Request", url);
-                    }
-                    else if(strcmp(action,"play") == 0)
-                    {
-                        char audiofile[32],repeat_tmp[16];
-                        GetCmdValue(SPK_CONF, "intercom:audio_file", audiofile, sizeof(audiofile));
-                        GetCmdValue(SPK_CONF, "intercom:audio_repeat", repeat_tmp, sizeof(repeat_tmp));
-                        int repeat = atoi(repeat_tmp);
-                        play_audio(audiofile,repeat);
-                        sprintf(strtmp, "File: %s; Repeat: %d", audiofile, repeat);
-                        writeLog( FUN, "KEY Play Auido", strtmp );
-                    }
-                    if(strcmp(input,"key") == 0)
-                    {
-                        outputControl(GPIO_135, GPIO_ON);
-                        if(DEBUG)
-                            printf( "gpio135 set on\n" );
-                        //gpio触发后判断是否为延时复位
-                        pthread_t thread_delay;
-                        pthread_create(&thread_delay, NULL, gpioDelayControl, NULL);
-                        pthread_detach(thread_delay);
-                    }
+                writeLog(BTN, "KEY", "DOWN");
+                GetCmdValue(SPK_CONF, "intercom:key_1_action", action, sizeof(action));
+                if(strcmp(action,"call") == 0)
+                {
+                    keyAction(KEY);
                 }
-                else if(strcmp(type,"switch") == 0)
+                if(strcmp(action,"http") == 0)
                 {
-                    char action[8],url[256];
-                    writeLog(FUN, "SWITCH", "CLOSED");
-                    GetCmdValue(SPK_CONF, "intercom:closed_action", action, sizeof(action));
-                    if(strcmp(action,"call") == 0)
-                    {
-                        outgoingCall(CLOSED);
-                    }
-                    else if(strcmp(action,"hangup") == 0)
-                    {
-                        if(BARESIP_STATUS == RINGING || BARESIP_STATUS == INUSE)
-                        {
-                            if(DEBUG)
-                                printf( "hangup call\n" );
-                            control_cmd(BARESIP_CHAN, "{\"cmd\":\"hangup\",\"data\":\"\"}");
-                            writeLog( FUN, "CLOSED Hangup", "" );
-                        }
-                    }
-                    else if(strcmp(action,"http") == 0)
-                    {
-                        GetCmdValue(SPK_CONF, "intercom:closed_http_url", url, sizeof(url));
-                        action_url(url);
-                        writeLog(FUN, "CLOSED HTTP Request", url);
-                    }
-                    else if(strcmp(action,"play") == 0)
-                    {
-                        char audiofile[32],repeat_tmp[16];
-                        GetCmdValue(SPK_CONF, "intercom:closed_audio_file", audiofile, sizeof(audiofile));
-                        GetCmdValue(SPK_CONF, "intercom:closed_audio_repeat", repeat_tmp, sizeof(repeat_tmp));
-                        int repeat = atoi(repeat_tmp);
-                        play_audio(audiofile,repeat);
-                        sprintf(strtmp, "File: %s; Repeat: %d", audiofile, repeat);
-                        writeLog( FUN, "CLOSED Play Auido", strtmp );
-                    }
-                    else if(strcmp(action,"stop") == 0)
-                    {
-                        control_cmd(BARESIP_CHAN, "{\"cmd\":\"play\",\"data\":\"\"}");
-                        writeLog( FUN, "CLOSED Stop Audio", "" );
-                    }
-                    if(strcmp(input,"closed") == 0)
-                    {
-                        outputControl(GPIO_135, GPIO_ON);
-                        if(DEBUG)
-                            printf( "gpio135 set on\n" );
-                        //gpio触发后判断是否为延时复位
-                        pthread_t thread_delay;
-                        pthread_create(&thread_delay, NULL, gpioDelayControl, NULL);
-                        pthread_detach(thread_delay);
-                    }
+                    GetCmdValue(SPK_CONF, "intercom:http_1_url", url, sizeof(url));
+                    action_url(url);
+	                writeLog(FUN, "KEY1 HTTP Request", url);
                 }
-            }
-            else
-            {
-                if(strcmp(type,"switch") == 0)
+                else if(strcmp(action,"play") == 0)
                 {
-                    char action[8],url[256];
-                    writeLog(FUN, "SWITCH", "OPEN");
-                    GetCmdValue(SPK_CONF, "intercom:open_action", action, sizeof(action));
-                    if(strcmp(action,"call") == 0)
-                    {
-                        outgoingCall(OPEN);
-                    }
-                    else if(strcmp(action,"hangup") == 0)
-                    {
-                        if(BARESIP_STATUS == RINGING || BARESIP_STATUS == INUSE)
-                        {
-                            if(DEBUG)
-                                printf( "hangup call\n" );
-                            control_cmd(BARESIP_CHAN, "{\"cmd\":\"hangup\",\"data\":\"\"}");
-                            writeLog( FUN, "OPEN Hangup", "" );
-                        }
-                    }
-                    else if(strcmp(action,"http") == 0)
-                    {
-                        GetCmdValue(SPK_CONF, "intercom:open_http_url", url, sizeof(url));
-                        action_url(url);
-                        writeLog(FUN, "OPEN HTTP Request", url);
-                    }
-                    else if(strcmp(action,"play") == 0)
-                    {
-                        char audiofile[32],repeat_tmp[16];
-                        GetCmdValue(SPK_CONF, "intercom:open_audio_file", audiofile, sizeof(audiofile));
-                        GetCmdValue(SPK_CONF, "intercom:open_audio_repeat", repeat_tmp, sizeof(repeat_tmp));
-                        int repeat = atoi(repeat_tmp);
-                        play_audio(audiofile,repeat);
-                        sprintf(strtmp, "File: %s; Repeat: %d", audiofile, repeat);
-                        writeLog( FUN, "OPEN Play Auido", strtmp );
-                    }
-                    else if(strcmp(action,"stop") == 0)
-                    {
-                        control_cmd(BARESIP_CHAN, "{\"cmd\":\"play\",\"data\":\"\"}");
-                        writeLog( FUN, "OPEN Stop Audio", "" );
-                    }
-                    if(strcmp(input,"open") == 0)
-                    {
-                        outputControl(GPIO_135, GPIO_ON);
-                        if(DEBUG)
-                            printf( "gpio135 set on\n" );
-                        //gpio触发后判断是否为延时复位
-                        pthread_t thread_delay;
-                        pthread_create(&thread_delay, NULL, gpioDelayControl, NULL);
-                        pthread_detach(thread_delay);
-                    }
+                    char audiofile[32],repeat_tmp[16];
+                    GetCmdValue(SPK_CONF, "intercom:audio_1_file", audiofile, sizeof(audiofile));
+                    GetCmdValue(SPK_CONF, "intercom:audio_1_repeat", repeat_tmp, sizeof(repeat_tmp));
+                    int repeat = atoi(repeat_tmp);
+                    play_audio(audiofile,repeat);
+                    sprintf(strtmp, "File: %s; Repeat: %d", audiofile, repeat);
+                    writeLog( FUN, "KEY1 Play Auido", strtmp );
                 }
             }
         }
@@ -2683,11 +2260,11 @@ int main(int argc, char *argv[]){
 
                 if(len > 10)
                 {
-                    keyAction(KEY3);
+                    keyAction(KEY2_10);
                 }
                 else if(len > 3)
                 {
-                    keyAction(KEY4_3)
+                    keyAction(KEY2_3);
                 }
             }
         }

+ 54 - 89
etc/scripts/audio_init.sh

@@ -3,122 +3,87 @@
 # initial audio set.
 #
 
-ajust_snd_params()
-{
-    times=3
-    volume_out=`sysconf ${volctrl_path} get volume volume_out`
-
-    # Set output volume
-    case ${volume_out} in
-        9)
-            value_out=99
-            ;;
-        8)
-            value_out=95
-            ;;
-        7)
-            value_out=92
-            ;;
-        6)
-            value_out=90
-            ;;
-        5)
-            value_out=88
-            ;;
-        4)
-            value_out=81
-            ;;
-        3)
-            value_out=66
-            ;;
-        2)
-            value_out=47
-            ;;
-        1)
-            value_out=19
-            ;;
-        0)
-            value_out=0
-            ;;
-    esac
-
-
-    while [ 1 ]
-    do
-        /usr/bin/amixer -q sset 'Master',0 ${value_out}
-
-        times=`expr $times - 1`
-
-        if [ ${times} -le 0 ];then
-            break;
-        fi
-    done
-}
-
 volctrl_path="/oem/etc/volctrl.conf"
 
-EQ_STAT="`ps|grep 'eq_drc_process'|grep -v grep`"
-if [ -z "${EQ_STAT}" ];then
-        /usr/bin/eq_drc_process > /dev/null 2>&1 &
-fi
-
+volume_out=`sysconf ${volctrl_path} get volume volume_out`
 volume_in=`sysconf ${volctrl_path} get volume volume_in`
 
-case ${volume_in} in
+# Set output volume
+case ${volume_out} in
+    10)
+        value_out=192
+        ;;
     9)
-        value_in=31
+        value_out=187
         ;;
     8)
-        value_in=30
+        value_out=180
         ;;
     7)
-        value_in=29
+        value_out=173
         ;;
     6)
-        value_in=28
+        value_out=165
         ;;
     5)
-        value_in=27
+        value_out=156
         ;;
     4)
-        value_in=26
+        value_out=144
         ;;
     3)
-        value_in=24
+        value_out=129
         ;;
     2)
-        value_in=23
+        value_out=108
         ;;
     1)
-        value_in=21
+        value_out=72
         ;;
     0)
-        value_in=0
+        value_out=0
         ;;
 esac
 
-if [ ${value_in} = 0 ];then
-    /usr/bin/amixer -q sset 'ADC MIC Group 3 Left' 'Mute'
-    /usr/bin/amixer -q sset 'ADC MIC Group 3 Right' 'Mute'
-else
-    /usr/bin/amixer -q sset 'ADC MIC Group 3 Left' 'Work'
-    /usr/bin/amixer -q sset 'ADC MIC Group 3 Right' 'Work'
-    /usr/bin/amixer -q sset 'ADC ALC Group 3 Left' ${value_in}
-    /usr/bin/amixer -q sset 'ADC ALC Group 3 Right' ${value_in}
-fi
+/usr/bin/amixer -q sset 'DAC',0 ${value_out}
 
-/usr/bin/amixer -q sset 'DAC HPMIX Left' 1
-/usr/bin/amixer -q sset 'DAC LINEOUT Left' 2
-/usr/bin/amixer -q sset 'DAC HPMIX Right' 1
-/usr/bin/amixer -q sset 'DAC LINEOUT Right' 2
-
-ajust_snd_params&
-
-/usr/bin/amixer -q sset 'ADC MIC Group 1 Left' 'Work'
+# Set input volume
+case ${volume_out} in
+    10)
+        value_in=192
+        ;;
+    9)
+        value_in=187
+        ;;
+    8)
+        value_in=180
+        ;;
+    7)
+        value_in=173
+        ;;
+    6)
+        value_in=165
+        ;;
+    5)
+        value_in=156
+        ;;
+    4)
+        value_in=144
+        ;;
+    3)
+        value_in=129
+        ;;
+    2)
+        value_in=108
+        ;;
+    1)
+        value_in=72
+        ;;
+    0)
+        value_in=0
+        ;;
+esac
 
-/usr/bin/amixer -q cset numid=11,iface=MIXER,name='ADC Main MICBIAS' 1
-/usr/bin/amixer -q cset numid=10,iface=MIXER,name='ADC MICBIAS Voltage' 5
-/usr/bin/amixer -q cset numid=12,iface=MIXER,name='ADC MICBIAS1' off
-/usr/bin/amixer -q cset numid=13,iface=MIXER,name='ADC MICBIAS2' on
+/usr/bin/amixer -q sset 'ADC',0 ${value_in}
 
 exit 0

+ 76 - 145
etc/scripts/set_volume.sh

@@ -3,168 +3,99 @@
 # initial audio set.
 #
 
-MODEL=`sysconf /etc/speaker.conf get system model`
-[ "${MODEL}" = "SH30" -o "${MODEL}" = "SW15" -o "${MODEL}" = "SC15" ] && DEV_TYPE="Speaker"
-[ "${MODEL}" = "IV03" -o "${MODEL}" = "IA03" ] && DEV_TYPE="Intercom"
-
 case $1 in
     set)
         volume_out=$2
+        volume_in=$3
     ;;
     resume)
-        /etc/scripts/pa_mute.sh 1
         volctrl_path="/oem/etc/volctrl.conf"
         volume_out=`sysconf ${volctrl_path} get volume volume_out`
+        volume_in=`sysconf ${volctrl_path} get volume volume_in`
     ;;
     *)
-        /etc/scripts/pa_mute.sh 1
         volctrl_path="/oem/etc/volctrl.conf"
         volume_out=`sysconf ${volctrl_path} get volume volume_out`
+        volume_in=`sysconf ${volctrl_path} get volume volume_in`
     ;;
 esac
 
 # Set output volume
-if [ "foo_${DEV_TYPE}" = "foo_Intercom" ];then
-    case ${volume_out} in
-        9)
-            value_out=99
-            ;;
-        8)
-            value_out=96
-            ;;
-        7)
-            value_out=93
-            ;;
-        6)
-            value_out=90
-            ;;
-        5)
-            value_out=86
-            ;;
-        4)
-            value_out=82
-            ;;
-        3)
-            value_out=78
-            ;;
-        2)
-            value_out=75
-            ;;
-        1)
-            value_out=71
-            ;;
-        0)
-            value_out=0
-            ;;
-    esac
-else # Speaker
-
-    if [ "foo_${MODEL}" = "foo_SC15" -o "foo_${MODEL}" = "foo_SW15" ];then
-
-        case ${volume_out} in
-            9)
-                value_out=91
-                ;;
-            8)
-                value_out=86
-                ;;
-            7)
-                value_out=79
-                ;;
-            6)
-                value_out=73
-                ;;
-            5)
-                value_out=67
-                ;;
-            4)
-                value_out=58
-                ;;
-            3)
-                value_out=47
-                ;;
-            2)
-                value_out=35
-                ;;
-            1)
-                value_out=19
-                ;;
-            0)
-                value_out=0
-                ;;
-        esac
-
-    elif [ "foo_${MODEL}" = "foo_SL50" ];then
+case ${volume_out} in
+    10)
+        value_out=192
+        ;;
+    9)
+        value_out=187
+        ;;
+    8)
+        value_out=180
+        ;;
+    7)
+        value_out=173
+        ;;
+    6)
+        value_out=165
+        ;;
+    5)
+        value_out=156
+        ;;
+    4)
+        value_out=144
+        ;;
+    3)
+        value_out=129
+        ;;
+    2)
+        value_out=108
+        ;;
+    1)
+        value_out=72
+        ;;
+    0)
+        value_out=0
+        ;;
+esac
 
-        case ${volume_out} in
-            9)
-                value_out="98,95"
-                ;;
-            8)
-                value_out="95,91"
-                ;;
-            7)
-                value_out="89,85"
-                ;;
-            6)
-                value_out="83,78"
-                ;;
-            5)
-                value_out="76,71"
-                ;;
-            4)
-                value_out="68,62"
-                ;;
-            3)
-                value_out="62,56"
-                ;;
-            2)
-                value_out="53,45"
-                ;;
-            1)
-                value_out="41,33"
-                ;;
-            0)
-                value_out=0
-                ;;
-        esac
+/usr/bin/amixer -q sset 'DAC',0 ${value_out}
 
-    else # SH30
+# Set input volume
+case ${volume_out} in
+    10)
+        value_in=192
+        ;;
+    9)
+        value_in=187
+        ;;
+    8)
+        value_in=180
+        ;;
+    7)
+        value_in=173
+        ;;
+    6)
+        value_in=165
+        ;;
+    5)
+        value_in=156
+        ;;
+    4)
+        value_in=144
+        ;;
+    3)
+        value_in=129
+        ;;
+    2)
+        value_in=108
+        ;;
+    1)
+        value_in=72
+        ;;
+    0)
+        value_in=0
+        ;;
+esac
 
-        case ${volume_out} in
-            9)
-                value_out=99
-                ;;
-            8)
-                value_out=95
-                ;;
-            7)
-                value_out=90
-                ;;
-            6)
-                value_out=86
-                ;;
-            5)
-                value_out=82
-                ;;
-            4)
-                value_out=78
-                ;;
-            3)
-                value_out=74
-                ;;
-            2)
-                value_out=70
-                ;;
-            1)
-                value_out=43
-                ;;
-            0)
-                value_out=0
-                ;;
-        esac
-    fi
-fi
-/usr/bin/amixer -q sset 'Master',0 ${value_out}
+/usr/bin/amixer -q sset 'ADC',0 ${value_in}
 
 exit 0

+ 1 - 1
etc/scripts/shell_action.sh

@@ -234,7 +234,7 @@ case ${action} in
             password="`${SYSCONFCMD} ${SYSCONF} get onvif password`"
             enMIC="`${SYSCONFCMD} ${SYSCONF} get onvif enable_mic`"
             mode="`${SYSCONFCMD} ${SYSCONF} get onvif mode`"
-            SerialNumber="`/usr/bin/vendor_storage -r VENDOR_SN_ID | cut -d ":" -f2 | tr -d "\n" | tr -d " "`"
+            SerialNumber="`cat /proc/cpuinfo | grep Serial | awk '{print $3}'`"
             uuid="`cat /tmp/uuid`"
             Mode="`${SYSCONFCMD} ${SYSCONF} get onvif relay_mode`"
             DelayTime="`${SYSCONFCMD} ${SYSCONF} get onvif relay_delaytime`"

+ 12 - 12
etc/scripts/watch_process.sh

@@ -12,10 +12,10 @@ start()
                         wd_c=`expr $wd_c + 1`
                 fi
 
-                # APIAGENT_STAT="`ps|grep api_agent|grep -v grep`"
-                # if [ -z "${APIAGENT_STAT}" ];then
-                #         /etc/scripts/api_agent &
-                # fi
+                APIAGENT_STAT="`ps|grep api_agent|grep -v grep`"
+                if [ -z "${APIAGENT_STAT}" ];then
+                        /etc/scripts/api_agent &
+                fi
 
                 REDIS_STAT="`ps -e|grep 'redis-server'|grep -v grep`"
                 if [ -z "${REDIS_STAT}" ];then
@@ -23,15 +23,15 @@ start()
                         wd_c=`expr $wd_c + 1`
                 fi
 
-                # OUTPUTCTRL_STAT="`ps|grep output_control|grep -v grep`"
-                # if [ -z "${OUTPUTCTRL_STAT}" ];then
-                #         /etc/scripts/output_control &
-                # fi
+                OUTPUTCTRL_STAT="`ps|grep output_control|grep -v grep`"
+                if [ -z "${OUTPUTCTRL_STAT}" ];then
+                        /etc/scripts/output_control &
+                fi
 
-                # PROCESS_STAT="`ps|grep service_process|grep -v grep`"
-                # if [ -z "${PROCESS_STAT}" ];then
-                #         /etc/scripts/service_process &
-                # fi
+                PROCESS_STAT="`ps|grep service_process|grep -v grep`"
+                if [ -z "${PROCESS_STAT}" ];then
+                        /etc/scripts/service_process &
+                fi
 
                 SIPPHONE_STAT="`ps -e|grep baresip|grep -v grep`"
                 SIPSEV_STAT="`ps|grep 'bareservice'|grep -v grep`"

+ 1 - 1
oem/etc/speaker.conf

@@ -283,6 +283,6 @@ relay_delaytime=3
 relay_type=On
 enable_mic=yes
 
-[chromium_url]
+[remote_cast]
 url=https://www.galaxynext.us/
 

+ 1 - 1
usr/sbin/kiosk-start.sh

@@ -11,7 +11,7 @@ xset s off
 xset s noblank
 xset -dpms
 
-URL="`${SYSCONFCMD} ${SPK_CONF} get chromium_url url`"
+URL="`${SYSCONFCMD} ${SPK_CONF} get remote_cast url`"
 
 
 while [ 1 ]