/* Removes the device, shutting it down */ int device_remove(struct device *dev) { int res = 0; int i, j; if (dev->state == RUNNING) { res = device_pause(dev); if (res) return res; } res = dev->deinit(dev); if (res) return res; for (i=0; i<dev_ptr; i++) { if (devices[i] == dev) { for (j=i+1; j<dev_ptr; j++) devices[j-1] = devices[j]; dev_ptr--; } } return 0; }
int device_pause_all(void) { int i; int res = 0; for (i=dev_ptr-1; i>=0; i--) { Serial1.print("Suspending "); Serial1.println(devices[i]->name); res |= device_pause(devices[i]); } return res; }
static INT8 cmdSetProcess(struct rf_cmd * pCmd) { switch(pCmd->cmd){ case KFISH_CMD_SET_CTRL_CFG: if(pCmd->ctrlId >= __local_ctrl_num){ return CMD_PROCESS_ERROR; } memcpy(__local_ctrl[pCmd->ctrlId].ctrl.led.pwm, pCmd->data, 24); local_device_info_save(); return CMD_PROCESS_ACK; case KFISH_CMD_SET_CTRL_NAME: if(pCmd->ctrlId >= __local_ctrl_num){ return CMD_PROCESS_ERROR; } memcpy(__local_ctrl[pCmd->ctrlId].name, pCmd->data, 24); __local_ctrl[pCmd->ctrlId].name[23] = 0; local_device_info_save(); DBG_PRINT("\nset ctrl%d name %s\n", pCmd->ctrlId, __local_ctrl[pCmd->ctrlId].name); return CMD_PROCESS_ACK; case KFISH_CMD_SET_DEVICE_NAME: memcpy(__device_name, pCmd->data, 24); __device_name[23] = 0; DBG_PRINT("new dev name %s\n", __device_name); local_device_info_save(); return CMD_PROCESS_ACK; case KFISH_CMD_TIME_NOTIFY: /* 时间同步是一个特殊的消息,主同一个同步命令只需要理会一次 */ /* slave time process */{ static UINT8 __last_time_seq = 0; if(__last_time_seq != pCmd->seqNum){ DBG_PRINT("time sync %d-%d-%d %d:%d:%d\n", pCmd->data[0], pCmd->data[1], pCmd->data[2], pCmd->data[4], pCmd->data[5], pCmd->data[6]); __last_time_seq = pCmd->seqNum; } return CMD_PROCESS_NO_ACK; } case KFISH_CMD_PAUSE_DEVICE: device_pause(pCmd); return CMD_PROCESS_ACK; default: return CMD_PROCESS_ERROR; } }