1e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev/*
2e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan MalchevCopyright (c) 2011-2012, The Linux Foundation. All rights reserved.
3e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
4e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan MalchevRedistribution and use in source and binary forms, with or without
5e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevmodification, are permitted provided that the following conditions are
6e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevmet:
7e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    * Redistributions of source code must retain the above copyright
8e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev      notice, this list of conditions and the following disclaimer.
9e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    * Redistributions in binary form must reproduce the above
10e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev      copyright notice, this list of conditions and the following
11e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev      disclaimer in the documentation and/or other materials provided
12e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev      with the distribution.
13e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    * Neither the name of The Linux Foundation nor the names of its
14e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev      contributors may be used to endorse or promote products derived
15e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev      from this software without specific prior written permission.
16e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
17e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan MalchevTHIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan MalchevWARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan MalchevMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan MalchevARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan MalchevBE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan MalchevCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan MalchevSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan MalchevBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan MalchevWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan MalchevOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan MalchevIF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev*/
29e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
30e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#include <pthread.h>
31e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#include "mm_camera_dbg.h"
32e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#include <errno.h>
33e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#include <sys/ioctl.h>
34e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#include <sys/types.h>
35e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#include <sys/stat.h>
36e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#include <fcntl.h>
37e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#include <poll.h>
38e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#include "mm_qcamera_unit_test.h"
39e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
40e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#define MM_QCAMERA_APP_UTEST_MAX_MAIN_LOOP 4
41e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#define MM_QCAM_APP_TEST_NUM 128
42e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
43e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#define MM_QCAMERA_APP_INTERATION 5
44e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
45e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevstatic mm_app_tc_t mm_app_tc[MM_QCAM_APP_TEST_NUM];
46e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevstatic int num_test_cases = 0;
47e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
48e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevint mm_app_tc_0(mm_camera_app_t *cam_apps)
49e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev{
50e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int rc = MM_CAMERA_OK;
51e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int i,j;
52e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int result = 0;
53e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
54e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    printf("\n Verifying Preview on front and back camera...\n");
55e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if (cam_apps->num_cameras == 0) {
56e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        CDBG_ERROR("%s:Query Failed: Num of cameras = %d\n",__func__, cam_apps->num_cameras);
57e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        rc = -1;
58e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        goto end;
59e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
60e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    for (i = 0; i < cam_apps->num_cameras; i++) {
61e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( mm_app_open(i) != MM_CAMERA_OK) {
62e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s:mm_app_open() err=%d\n",__func__, rc);
63e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
64e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
65e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
66e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (system_dimension_set(my_cam_app.cam_open) != MM_CAMERA_OK) {
67e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s:system_dimension_set() err=%d\n",__func__, rc);
68e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
69e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
70e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
71e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
72e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        for (j = 0; j < MM_QCAMERA_APP_INTERATION; j++) {
73e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            if ( MM_CAMERA_OK != (rc = startPreview(my_cam_app.cam_open))) {
74e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                CDBG_ERROR("%s: startPreview() err=%d\n", __func__, rc);
75e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                break;
76e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            }
77e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            /*if(mm_camera_app_timedwait() == ETIMEDOUT) {
78e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                    CDBG_ERROR("%s: Preview Callback not received in time or qbuf failed\n", __func__);
79e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                    break;
80e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            }*/
81e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            mm_camera_app_wait();
82e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            if ( MM_CAMERA_OK != (rc = stopPreview(my_cam_app.cam_open))) {
83e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                CDBG("%s: startPreview() err=%d\n", __func__, rc);
84e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                break;
85e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            }
86e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            result++;
87e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
88e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( mm_app_close(my_cam_app.cam_open) != MM_CAMERA_OK) {
89e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s:mm_app_close() err=%d\n",__func__, rc);
90e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
91e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
92e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
93e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
94e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (result != MM_QCAMERA_APP_INTERATION) {
95e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            printf("%s: Preview Start/Stop Fails for Camera %d in %d iteration", __func__, i,j);
96e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
97e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            break;
98e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
99e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
100e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        result = 0;
101e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
102e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    end:
103e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if (rc == 0) {
104e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        printf("\nPassed\n");
105e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    } else {
106e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        printf("\nFailed\n");
107e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
108e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    CDBG("%s:END, rc = %d\n", __func__, rc);
109e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    return rc;
110e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev}
111e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
112e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevint mm_app_tc_1(mm_camera_app_t *cam_apps)
113e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev{
114e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int rc = MM_CAMERA_OK;
115e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int i,j;
116e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int result = 0;
117e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
118e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    printf("\n Verifying Snapshot on front and back camera...\n");
119e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    for (i = 0; i < cam_apps->num_cameras; i++) {
120e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( mm_app_open(i) != MM_CAMERA_OK) {
121e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s:mm_app_open() err=%d\n",__func__, rc);
122e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
123e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
124e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
125e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (system_dimension_set(my_cam_app.cam_open) != MM_CAMERA_OK) {
126e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s:system_dimension_set() err=%d\n",__func__, rc);
127e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
128e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
129e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
130e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
131e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( MM_CAMERA_OK != (rc = startPreview(my_cam_app.cam_open))) {
132e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s: startPreview() err=%d\n", __func__, rc);
133e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            break;
134e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
135e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        for (j = 0; j < MM_QCAMERA_APP_INTERATION; j++) {
136e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            if ( MM_CAMERA_OK != (rc = takePicture_yuv(my_cam_app.cam_open))) {
137e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                CDBG_ERROR("%s: TakePicture() err=%d\n", __func__, rc);
138e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                break;
139e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            }
140e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            /*if(mm_camera_app_timedwait() == ETIMEDOUT) {
141e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                    CDBG_ERROR("%s: Snapshot/Preview Callback not received in time or qbuf Faile\n", __func__);
142e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                    break;
143e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            }*/
144e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            mm_camera_app_wait();
145e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            result++;
146e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
147e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( MM_CAMERA_OK != (rc = stopPreview(my_cam_app.cam_open))) {
148e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG("%s: startPreview() err=%d\n", __func__, rc);
149e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            break;
150e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
151e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( mm_app_close(my_cam_app.cam_open) != MM_CAMERA_OK) {
152e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s:mm_app_close() err=%d\n",__func__, rc);
153e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
154e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
155e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
156e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (result != MM_QCAMERA_APP_INTERATION) {
157e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            printf("%s: Snapshot Start/Stop Fails for Camera %d in %d iteration", __func__, i,j);
158e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
159e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            break;
160e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
161e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
162e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        result = 0;
163e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
164e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    end:
165e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if (rc == 0) {
166e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        printf("\t***Passed***\n");
167e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    } else {
168e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        printf("\t***Failed***\n");
169e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
170e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    CDBG("%s:END, rc = %d\n", __func__, rc);
171e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    return rc;
172e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev}
173e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
174e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevint mm_app_tc_2(mm_camera_app_t *cam_apps)
175e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev{
176e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int rc = MM_CAMERA_OK;
177e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int i,j;
178e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int result = 0;
179e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
180e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    printf("\n Verifying Video on front and back camera...\n");
181e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    for (i = 0; i < cam_apps->num_cameras; i++) {
182e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( mm_app_open(i) != MM_CAMERA_OK) {
183e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s:mm_app_open() err=%d\n",__func__, rc);
184e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
185e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
186e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
187e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (system_dimension_set(my_cam_app.cam_open) != MM_CAMERA_OK) {
188e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s:system_dimension_set() err=%d\n",__func__, rc);
189e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
190e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
191e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
192e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
193e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( MM_CAMERA_OK != (rc = startPreview(my_cam_app.cam_open))) {
194e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s: startPreview() err=%d\n", __func__, rc);
195e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            break;
196e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
197e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        for (j = 0; j < MM_QCAMERA_APP_INTERATION; j++) {
198e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            if ( MM_CAMERA_OK != (rc = startRecording(my_cam_app.cam_open))) {
199e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                CDBG_ERROR("%s: StartVideorecording() err=%d\n", __func__, rc);
200e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                break;
201e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            }
202e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
203e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            /*if(mm_camera_app_timedwait() == ETIMEDOUT) {
204e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                    CDBG_ERROR("%s: Video Callback not received in time\n", __func__);
205e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                    break;
206e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            }*/
207e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            mm_camera_app_wait();
208e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            if ( MM_CAMERA_OK != (rc = stopRecording(my_cam_app.cam_open))) {
209e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                CDBG_ERROR("%s: Stopvideorecording() err=%d\n", __func__, rc);
210e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                break;
211e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            }
212e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            result++;
213e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
214e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( MM_CAMERA_OK != (rc = stopPreview(my_cam_app.cam_open))) {
215e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG("%s: startPreview() err=%d\n", __func__, rc);
216e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            break;
217e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
218e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( mm_app_close(my_cam_app.cam_open) != MM_CAMERA_OK) {
219e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s:mm_app_close() err=%d\n",__func__, rc);
220e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
221e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
222e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
223e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (result != MM_QCAMERA_APP_INTERATION) {
224e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            printf("%s: Video Start/Stop Fails for Camera %d in %d iteration", __func__, i,j);
225e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
226e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            break;
227e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
228e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
229e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        result = 0;
230e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
231e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    end:
232e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if (rc == 0) {
233e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        printf("\nPassed\n");
234e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    } else {
235e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        printf("\nFailed\n");
236e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
237e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    CDBG("%s:END, rc = %d\n", __func__, rc);
238e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    return rc;
239e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev}
240e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
241e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevint mm_app_tc_3(mm_camera_app_t *cam_apps)
242e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev{
243e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int rc = MM_CAMERA_OK;
244e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int i,j;
245e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int result = 0;
246e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
247e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    printf("\n Verifying RDI Stream on front and back camera...\n");
248e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if (cam_apps->num_cameras == 0) {
249e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        CDBG_ERROR("%s:Query Failed: Num of cameras = %d\n",__func__, cam_apps->num_cameras);
250e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        rc = -1;
251e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        goto end;
252e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
253e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    for (i = 0; i < cam_apps->num_cameras; i++) {
254e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( mm_app_open(i) != MM_CAMERA_OK) {
255e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s:mm_app_open() err=%d\n",__func__, rc);
256e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
257e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
258e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
259e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (system_dimension_set(my_cam_app.cam_open) != MM_CAMERA_OK) {
260e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s:system_dimension_set() err=%d\n",__func__, rc);
261e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
262e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
263e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
264e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        for (j = 0; j < MM_QCAMERA_APP_INTERATION; j++) {
265e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            if ( MM_CAMERA_OK != (rc = startRdi(my_cam_app.cam_open))) {
266e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                CDBG_ERROR("%s: StartVideorecording() err=%d\n", __func__, rc);
267e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                break;
268e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            }
269e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
270e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            /*if(mm_camera_app_timedwait() == ETIMEDOUT) {
271e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                    CDBG_ERROR("%s: Video Callback not received in time\n", __func__);
272e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                    break;
273e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            }*/
274e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            mm_camera_app_wait();
275e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            if ( MM_CAMERA_OK != (rc = stopRdi(my_cam_app.cam_open))) {
276e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                CDBG_ERROR("%s: Stopvideorecording() err=%d\n", __func__, rc);
277e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                break;
278e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            }
279e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            result++;
280e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
281e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( mm_app_close(my_cam_app.cam_open) != MM_CAMERA_OK) {
282e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG_ERROR("%s:mm_app_close() err=%d\n",__func__, rc);
283e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
284e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
285e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
286e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (result != MM_QCAMERA_APP_INTERATION) {
287e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            printf("%s: Video Start/Stop Fails for Camera %d in %d iteration", __func__, i,j);
288e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = -1;
289e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            break;
290e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
291e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
292e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        result = 0;
293e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
294e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    end:
295e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if (rc == 0) {
296e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        printf("\nPassed\n");
297e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    } else {
298e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        printf("\nFailed\n");
299e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
300e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    CDBG("%s:END, rc = %d\n", __func__, rc);
301e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    return rc;
302e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev}
303e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
304e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevint mm_app_tc_4(mm_camera_app_t *cam_apps)
305e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev{
306e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int rc = MM_CAMERA_OK;
307e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int i;
308e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    printf("Running %s - open/close ,video0, open/close preview channel only\n", __func__);
309e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#if 0
310e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    for (i = 0; i < MM_QCAMERA_APP_UTEST_MAX_MAIN_LOOP; i++) {
311e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( 0 != (rc = mm_app_open(cam_id, MM_CAMERA_OP_MODE_NOTUSED))) {
312e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG("%s: open cam %d at opmode = %d err, loop=%d, rc=%d\n", __func__, cam_id, MM_CAMERA_OP_MODE_NOTUSED, i, rc);
313e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
314e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
315e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_open_preview(cam_id))) {
316e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
317e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
318e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_close_preview(cam_id))) {
319e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
320e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
321e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( 0 != (rc = mm_app_close(cam_id))) {
322e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG("%s: close cam %d at opmode = %d err,loop=%d, rc=%d\n", __func__, cam_id, MM_CAMERA_OP_MODE_NOTUSED, i, rc);
323e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
324e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
325e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
326e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevend:
327e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#endif
328e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    CDBG("%s:END, rc=%d\n", __func__, rc);
329e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    return rc;
330e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev}
331e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
332e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
333e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
334e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevint mm_app_tc_5(mm_camera_app_t *cam_apps)
335e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev{
336e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int rc = MM_CAMERA_OK;
337e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int i;
338e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    printf("Running %s - open/close ,video0, open/close snapshot channel only\n", __func__);
339e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#if 0
340e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    for (i = 0; i < MM_QCAMERA_APP_UTEST_MAX_MAIN_LOOP; i++) {
341e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( 0 != (rc = mm_app_open(cam_id, MM_CAMERA_OP_MODE_NOTUSED))) {
342e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG("%s: open cam %d at opmode = %d err, loop=%d, rc=%d\n",
343e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                 __func__, cam_id, MM_CAMERA_OP_MODE_NOTUSED, i, rc);
344e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
345e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
346e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_open_snapshot(cam_id))) {
347e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
348e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
349e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_close_snapshot(cam_id))) {
350e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
351e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
352e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( 0 != (rc = mm_app_close(cam_id))) {
353e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            CDBG("%s: close cam %d at opmode = %d err,loop=%d, rc=%d\n",
354e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                 __func__, cam_id, MM_CAMERA_OP_MODE_NOTUSED, i, rc);
355e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
356e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
357e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
358e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    end:
359e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#endif
360e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    CDBG("%s:END, rc=%d\n", __func__, rc);
361e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    return rc;
362e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev}
363e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
364e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevint mm_app_tc_6(mm_camera_app_t *cam_apps)
365e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev{
366e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int rc = MM_CAMERA_OK;
367e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int i;
368e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    printf("Running %s - simple preview \n", __func__);
369e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#if 0
370e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if ( 0 != (rc = mm_app_open(cam_id, MM_CAMERA_OP_MODE_NOTUSED))) {
371e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        CDBG("%s: open cam %d at opmode = %d err, loop=%d, rc=%d\n",
372e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev             __func__, cam_id, MM_CAMERA_OP_MODE_NOTUSED, i, rc);
373e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        goto end;
374e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
375e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
376e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    for (i = 0; i < MM_QCAMERA_APP_UTEST_MAX_MAIN_LOOP; i++) {
377e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_init_preview(cam_id))) {
378e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
379e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
380e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_start_preview(cam_id))) {
381e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
382e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
383e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        /* sleep 8 seconds */
384e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        usleep(8000000);
385e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_stop_preview(cam_id))) {
386e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
387e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
388e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc=mm_app_deinit_preview(cam_id))) {
389e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
390e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
391e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_close_preview(cam_id))) {
392e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
393e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
394e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
395e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if ( 0 != (rc = mm_app_close(cam_id))) {
396e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        CDBG("%s: close cam %d at opmode = %d err,loop=%d, rc=%d\n",
397e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev             __func__, cam_id, MM_CAMERA_OP_MODE_NOTUSED, i, rc);
398e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        goto end;
399e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
400e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevend:
401e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#endif
402e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    CDBG("%s:END, rc=%d\n", __func__, rc);
403e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    return rc;
404e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev}
405e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
406e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevint mm_app_tc_7(mm_camera_app_t *cam_apps)
407e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev{
408e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int rc = MM_CAMERA_OK;
409e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int i;
410e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    printf("Running %s - simple preview and recording \n", __func__);
411e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#if 0
412e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if ( 0 != (rc = mm_app_open(cam_id, MM_CAMERA_OP_MODE_NOTUSED))) {
413e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        CDBG("%s: open cam %d at opmode = %d err, loop=%d, rc=%d\n",
414e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev             __func__, cam_id, MM_CAMERA_OP_MODE_NOTUSED, i, rc);
415e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        goto end;
416e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
417e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
418e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    for (i = 0; i < MM_QCAMERA_APP_UTEST_MAX_MAIN_LOOP; i++) {
419e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_init_preview(cam_id))) {
420e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
421e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
422e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_start_preview(cam_id))) {
423e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
424e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
425e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        /* sleep 8 seconds */
426e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        usleep(8000000);
427e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_start_recording(cam_id))) {
428e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
429e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
430e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        usleep(1000000);
431e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_stop_recording(cam_id))) {
432e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
433e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
434e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        usleep(8000000);
435e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_stop_preview(cam_id))) {
436e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
437e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
438e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc=mm_app_deinit_preview(cam_id))) {
439e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
440e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
441e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_close_preview(cam_id))) {
442e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
443e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
444e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
445e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if ( 0 != (rc = mm_app_close(cam_id))) {
446e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        CDBG("%s: close cam %d at opmode = %d err,loop=%d, rc=%d\n",
447e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev             __func__, cam_id, MM_CAMERA_OP_MODE_NOTUSED, i, rc);
448e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        goto end;
449e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
450e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevend:
451e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#endif
452e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    CDBG("%s:END, rc=%d\n", __func__, rc);
453e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    return rc;
454e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev}
455e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
456e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevint mm_app_tc_8(mm_camera_app_t *cam_apps)
457e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev{
458e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int rc = MM_CAMERA_OK;
459e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int i;
460e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    printf("Running %s - preview, recording, and snapshot, then preview again \n", __func__);
461e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#if 0
462e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if ( 0 != (rc = mm_app_open(cam_id, MM_CAMERA_OP_MODE_NOTUSED))) {
463e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        CDBG("%s: open cam %d at opmode = %d err, loop=%d, rc=%d\n",
464e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev             __func__, cam_id, MM_CAMERA_OP_MODE_NOTUSED, i, rc);
465e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        goto end;
466e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
467e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
468e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    for (i = 0; i < MM_QCAMERA_APP_UTEST_MAX_MAIN_LOOP; i++) {
469e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_init_preview(cam_id))) {
470e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
471e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
472e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_start_preview(cam_id))) {
473e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
474e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
475e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        /* sleep 8 seconds */
476e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        usleep(8000000);
477e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_start_recording(cam_id))) {
478e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
479e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
480e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        usleep(1000000);
481e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_stop_recording(cam_id))) {
482e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
483e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
484e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_stop_preview(cam_id))) {
485e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
486e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
487e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0!=(rc=mm_app_init_snapshot(cam_id))) {
488e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
489e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
490e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc=mm_app_take_picture(cam_id))) {
491e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
492e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
493e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if ( 0 != (rc = mm_app_deinit_snahspot(cam_id))) {
494e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
495e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
496e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_start_preview(cam_id))) {
497e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
498e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
499e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        usleep(8000000);
500e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc=mm_app_deinit_preview(cam_id))) {
501e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
502e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
503e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (0 != (rc = mm_app_close_preview(cam_id))) {
504e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
505e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
506e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
507e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if ( 0 != (rc = mm_app_close(cam_id))) {
508e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        CDBG("%s: close cam %d at opmode = %d err,loop=%d, rc=%d\n",
509e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev             __func__, cam_id, MM_CAMERA_OP_MODE_NOTUSED, i, rc);
510e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        goto end;
511e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
512e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevend:
513e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev#endif
514e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    CDBG("%s:END, rc=%d\n", __func__, rc);
515e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    return rc;
516e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev}
517e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
518e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
519e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevint mm_app_gen_test_cases()
520e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev{
521e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int tc = 0;
522e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    memset(mm_app_tc, 0, sizeof(mm_app_tc));
523e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_0;
524e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_1;
525e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_2;
526e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if (tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_3;
527e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    /*if(tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_4;
528e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if(tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_5;
529e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if(tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_6;
530e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if(tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_7;
531e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    if(tc < MM_QCAM_APP_TEST_NUM) mm_app_tc[tc++].f = mm_app_tc_8;*/
532e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    return tc;
533e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev}
534e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
535e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchevint mm_app_unit_test_entry(mm_camera_app_t *cam_app)
536e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev{
537e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int rc = MM_CAMERA_OK;
538e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int i, tc = 0;
539e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    int cam_id = 0;
540e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
541e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    tc = mm_app_gen_test_cases();
542e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    CDBG("Running %d test cases\n",tc);
543e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    for (i = 0; i < tc; i++) {
544e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        mm_app_tc[i].r = mm_app_tc[i].f(cam_app);
545e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        if (mm_app_tc[i].r != MM_CAMERA_OK) {
546e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            printf("%s: test case %d error = %d, abort unit testing engine!!!!\n",
547e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev                   __func__, i, mm_app_tc[i].r);
548e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            rc = mm_app_tc[i].r;
549e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev            goto end;
550e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev        }
551e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    }
552e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    end:
553e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    printf("nTOTAL_TSET_CASE = %d, NUM_TEST_RAN = %d, rc=%d\n", tc, i, rc);
554e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev    return rc;
555e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev}
556e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
557e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
558e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
559e6e5b199f1d8d2d10d9ca66210e8ee9315d65a50Iliyan Malchev
560