1315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet/* 2315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * Abilis Systems Single DVB-T Receiver 3315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * Copyright (C) 2008 Pierrick Hascoet <pierrick.hascoet@abilis.com> 4315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * 5315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * This program is free software; you can redistribute it and/or modify 6315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * it under the terms of the GNU General Public License as published by 7315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * the Free Software Foundation; either version 2, or (at your option) 8315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * any later version. 9315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * 10315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * This program is distributed in the hope that it will be useful, 11315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * but WITHOUT ANY WARRANTY; without even the implied warranty of 12315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * GNU General Public License for more details. 14315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * 15315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * You should have received a copy of the GNU General Public License 16315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * along with this program; if not, write to the Free Software 17315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18315cadc446714c5c1a406afff6f53aa80d1e267ePierrick Hascoet */ 19f080c2ef542b0d3c78eb2f98a4450a8e22b471afPiotr Chmura 2041b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet#include <linux/kernel.h> 2141b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet#include "as102_drv.h" 2241b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet#include "as10x_cmd.h" 2341b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 2441b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet/** 253b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * as10x_cmd_add_PID_filter - send add filter command to AS10x 2634490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki * @adap: pointer to AS10x bus adapter 273b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * @filter: TSFilter filter for DVB-T 283b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * 293b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * Return 0 on success or negative value in case of error. 303b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki */ 3134490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrockiint as10x_cmd_add_PID_filter(struct as10x_bus_adapter_t *adap, 3279848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller struct as10x_ts_filter *filter) 3379848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller{ 3479848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller int error; 3579848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller struct as10x_cmd_t *pcmd, *prsp; 3679848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller 3779848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller ENTER(); 3879848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller 3934490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki pcmd = adap->cmd; 4034490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki prsp = adap->rsp; 4179848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller 4279848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* prepare command */ 4334490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki as10x_cmd_build(pcmd, (++adap->cmd_xid), 4479848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller sizeof(pcmd->body.add_pid_filter.req)); 4579848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller 4679848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* fill command */ 4779848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller pcmd->body.add_pid_filter.req.proc_id = 4879848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller cpu_to_le16(CONTROL_PROC_SETFILTER); 4979848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller pcmd->body.add_pid_filter.req.pid = cpu_to_le16(filter->pid); 5079848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller pcmd->body.add_pid_filter.req.stream_type = filter->type; 5179848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller 5279848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller if (filter->idx < 16) 5379848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller pcmd->body.add_pid_filter.req.idx = filter->idx; 5479848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller else 5579848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller pcmd->body.add_pid_filter.req.idx = 0xFF; 5679848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller 5779848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* send command */ 5834490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki if (adap->ops->xfer_cmd) { 5934490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki error = adap->ops->xfer_cmd(adap, (uint8_t *) pcmd, 6079848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller sizeof(pcmd->body.add_pid_filter.req) 6179848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller + HEADER_SIZE, (uint8_t *) prsp, 6279848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller sizeof(prsp->body.add_pid_filter.rsp) 6379848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller + HEADER_SIZE); 6479848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller } else { 6579848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller error = AS10X_CMD_ERROR; 6679848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller } 6779848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller 6879848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller if (error < 0) 6979848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller goto out; 7079848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller 7179848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* parse response */ 7279848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller error = as10x_rsp_parse(prsp, CONTROL_PROC_SETFILTER_RSP); 7379848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller 7479848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller if (error == 0) { 7579848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* Response OK -> get response data */ 7679848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller filter->idx = prsp->body.add_pid_filter.rsp.filter_id; 7779848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller } 7841b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 7941b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoetout: 8079848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller LEAVE(); 8179848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller return error; 8241b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet} 8341b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 8441b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet/** 853b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * as10x_cmd_del_PID_filter - Send delete filter command to AS10x 8634490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki * @adap: pointer to AS10x bus adapte 873b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * @pid_value: PID to delete 883b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * 893b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * Return 0 on success or negative value in case of error. 903b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki */ 9134490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrockiint as10x_cmd_del_PID_filter(struct as10x_bus_adapter_t *adap, 9241b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet uint16_t pid_value) 9341b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet{ 9479848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller int error; 9579848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller struct as10x_cmd_t *pcmd, *prsp; 9641b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 9779848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller ENTER(); 9841b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 9934490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki pcmd = adap->cmd; 10034490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki prsp = adap->rsp; 10141b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 10279848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* prepare command */ 10334490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki as10x_cmd_build(pcmd, (++adap->cmd_xid), 10479848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller sizeof(pcmd->body.del_pid_filter.req)); 10541b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 10679848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* fill command */ 10779848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller pcmd->body.del_pid_filter.req.proc_id = 10879848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller cpu_to_le16(CONTROL_PROC_REMOVEFILTER); 10979848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller pcmd->body.del_pid_filter.req.pid = cpu_to_le16(pid_value); 11041b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 11179848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* send command */ 11234490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki if (adap->ops->xfer_cmd) { 11334490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki error = adap->ops->xfer_cmd(adap, (uint8_t *) pcmd, 11479848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller sizeof(pcmd->body.del_pid_filter.req) 11579848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller + HEADER_SIZE, (uint8_t *) prsp, 11679848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller sizeof(prsp->body.del_pid_filter.rsp) 11779848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller + HEADER_SIZE); 11879848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller } else { 11979848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller error = AS10X_CMD_ERROR; 12079848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller } 12141b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 12279848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller if (error < 0) 12379848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller goto out; 12441b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 12579848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* parse response */ 12679848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller error = as10x_rsp_parse(prsp, CONTROL_PROC_REMOVEFILTER_RSP); 12741b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 12841b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoetout: 12979848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller LEAVE(); 13079848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller return error; 13141b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet} 13241b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 13341b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet/** 1343b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * as10x_cmd_start_streaming - Send start streaming command to AS10x 13534490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki * @adap: pointer to AS10x bus adapter 1363b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * 1373b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * Return 0 on success or negative value in case of error. 1383b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki */ 13934490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrockiint as10x_cmd_start_streaming(struct as10x_bus_adapter_t *adap) 14041b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet{ 14179848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller int error; 14279848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller struct as10x_cmd_t *pcmd, *prsp; 14341b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 14479848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller ENTER(); 14541b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 14634490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki pcmd = adap->cmd; 14734490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki prsp = adap->rsp; 14841b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 14979848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* prepare command */ 15034490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki as10x_cmd_build(pcmd, (++adap->cmd_xid), 15179848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller sizeof(pcmd->body.start_streaming.req)); 15241b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 15379848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* fill command */ 15479848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller pcmd->body.start_streaming.req.proc_id = 15579848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller cpu_to_le16(CONTROL_PROC_START_STREAMING); 15641b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 15779848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* send command */ 15834490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki if (adap->ops->xfer_cmd) { 15934490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki error = adap->ops->xfer_cmd(adap, (uint8_t *) pcmd, 16079848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller sizeof(pcmd->body.start_streaming.req) 16179848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller + HEADER_SIZE, (uint8_t *) prsp, 16279848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller sizeof(prsp->body.start_streaming.rsp) 16379848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller + HEADER_SIZE); 16479848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller } else { 16579848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller error = AS10X_CMD_ERROR; 16679848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller } 16741b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 16879848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller if (error < 0) 16979848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller goto out; 17041b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 17179848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* parse response */ 17279848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller error = as10x_rsp_parse(prsp, CONTROL_PROC_START_STREAMING_RSP); 17341b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 17441b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoetout: 17579848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller LEAVE(); 17679848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller return error; 17741b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet} 17841b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 17941b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet/** 1803b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * as10x_cmd_stop_streaming - Send stop streaming command to AS10x 18134490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki * @adap: pointer to AS10x bus adapter 1823b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * 1833b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki * Return 0 on success or negative value in case of error. 1843b4544a3a48b113d09610f2188954f4276047781Sylwester Nawrocki */ 18534490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrockiint as10x_cmd_stop_streaming(struct as10x_bus_adapter_t *adap) 18641b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet{ 18779848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller int8_t error; 18879848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller struct as10x_cmd_t *pcmd, *prsp; 18941b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 19079848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller ENTER(); 19141b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 19234490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki pcmd = adap->cmd; 19334490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki prsp = adap->rsp; 19441b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 19579848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* prepare command */ 19634490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki as10x_cmd_build(pcmd, (++adap->cmd_xid), 19779848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller sizeof(pcmd->body.stop_streaming.req)); 19841b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 19979848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* fill command */ 20079848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller pcmd->body.stop_streaming.req.proc_id = 20179848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller cpu_to_le16(CONTROL_PROC_STOP_STREAMING); 20241b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 20379848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* send command */ 20434490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki if (adap->ops->xfer_cmd) { 20534490a0a3dfd9c048abc5b9a3ce86fb0fbf881cfSylwester Nawrocki error = adap->ops->xfer_cmd(adap, (uint8_t *) pcmd, 20679848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller sizeof(pcmd->body.stop_streaming.req) 20779848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller + HEADER_SIZE, (uint8_t *) prsp, 20879848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller sizeof(prsp->body.stop_streaming.rsp) 20979848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller + HEADER_SIZE); 21079848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller } else { 21179848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller error = AS10X_CMD_ERROR; 21279848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller } 21341b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 21479848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller if (error < 0) 21579848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller goto out; 21641b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 21779848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller /* parse response */ 21879848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller error = as10x_rsp_parse(prsp, CONTROL_PROC_STOP_STREAMING_RSP); 21941b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet 22041b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoetout: 22179848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller LEAVE(); 22279848e9afbdb47a230d55d29af1a6fada718427cDevin Heitmueller return error; 22341b44e0418112e694f9b7beb8088efbb8c9c0053Pierrick Hascoet} 224