From aeb2fff068e13c5d99f350a92373eb905e1a1522 Mon Sep 17 00:00:00 2001 From: George Hotz Date: Fri, 17 Jan 2020 11:05:23 -0800 Subject: [PATCH] selfdrive/ui --- selfdrive/ui/.gitignore | 1 + selfdrive/ui/SConscript | 15 + selfdrive/ui/linux.cc | 100 +++ selfdrive/ui/paint.cc | 1050 +++++++++++++++++++++++++ selfdrive/ui/slplay.c | 184 +++++ selfdrive/ui/slplay.h | 21 + selfdrive/ui/sound.cc | 85 ++ selfdrive/ui/sound.hpp | 17 + selfdrive/ui/spinner/Makefile | 74 ++ selfdrive/ui/spinner/spinner | Bin 0 -> 534752 bytes selfdrive/ui/spinner/spinner.c | 21 + selfdrive/ui/test/.gitignore | 2 + selfdrive/ui/test/Makefile | 69 ++ selfdrive/ui/test/build_play_sound.sh | 3 + selfdrive/ui/test/play_sound.c | 37 + selfdrive/ui/test/test.c | 48 ++ selfdrive/ui/ui.cc | 972 +++++++++++++++++++++++ selfdrive/ui/ui.hpp | 253 ++++++ 18 files changed, 2952 insertions(+) create mode 100644 selfdrive/ui/.gitignore create mode 100644 selfdrive/ui/SConscript create mode 100644 selfdrive/ui/linux.cc create mode 100644 selfdrive/ui/paint.cc create mode 100644 selfdrive/ui/slplay.c create mode 100644 selfdrive/ui/slplay.h create mode 100644 selfdrive/ui/sound.cc create mode 100644 selfdrive/ui/sound.hpp create mode 100644 selfdrive/ui/spinner/Makefile create mode 100755 selfdrive/ui/spinner/spinner create mode 100644 selfdrive/ui/spinner/spinner.c create mode 100644 selfdrive/ui/test/.gitignore create mode 100644 selfdrive/ui/test/Makefile create mode 100755 selfdrive/ui/test/build_play_sound.sh create mode 100644 selfdrive/ui/test/play_sound.c create mode 100644 selfdrive/ui/test/test.c create mode 100644 selfdrive/ui/ui.cc create mode 100644 selfdrive/ui/ui.hpp diff --git a/selfdrive/ui/.gitignore b/selfdrive/ui/.gitignore new file mode 100644 index 0000000000..2c850c2090 --- /dev/null +++ b/selfdrive/ui/.gitignore @@ -0,0 +1 @@ +ui diff --git a/selfdrive/ui/SConscript b/selfdrive/ui/SConscript new file mode 100644 index 0000000000..ad96cb0a4d --- /dev/null +++ b/selfdrive/ui/SConscript @@ -0,0 +1,15 @@ +Import('env', 'arch', 'common', 'messaging', 'gpucommon', 'visionipc', 'cereal') + +src = ['ui.cc', 'paint.cc', '#phonelibs/nanovg/nanovg.c'] +libs = [common, 'zmq', 'czmq', 'capnp', 'capnp_c', 'm', cereal, 'json', messaging, 'OpenCL', gpucommon, visionipc] + +if arch == "aarch64": + src += ['sound.cc', 'slplay.c'] + libs += ['EGL', 'GLESv3', 'gnustl_shared', 'log', 'utils', 'gui', 'hardware', 'ui', 'CB', 'gsl', 'adreno_utils', 'OpenSLES', 'cutils', 'uuid'] +else: + src += ['linux.cc'] + libs += ['EGL', 'pthread', 'X11-xcb', 'xcb', 'X11', 'glfw'] + +env.Program('_ui', src, + LINKFLAGS=['-Wl,-rpath=/system/lib64,-rpath=/system/comma/usr/lib'], + LIBS=libs) diff --git a/selfdrive/ui/linux.cc b/selfdrive/ui/linux.cc new file mode 100644 index 0000000000..62531e356d --- /dev/null +++ b/selfdrive/ui/linux.cc @@ -0,0 +1,100 @@ +#include +#include +#include +#include +#include + +#include "ui.hpp" + +#define GLFW_INCLUDE_ES2 +#define GLFW_INCLUDE_GLEXT +#include + +typedef struct FramebufferState FramebufferState; +typedef struct TouchState TouchState; + +#define FALSE 0 +#define TRUE 1 + +#include +#include + +extern "C" { + +FramebufferState* framebuffer_init( + const char* name, int32_t layer, int alpha, + int *out_w, int *out_h) { + glfwInit(); + + glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); + glfwWindowHint(GLFW_RESIZABLE, 0); + GLFWwindow* window; + window = glfwCreateWindow(1920, 1080, "ui", NULL, NULL); + if (!window) { + printf("glfwCreateWindow failed\n"); + } + + glfwMakeContextCurrent(window); + glfwSwapInterval(0); + + // clear screen + glClearColor(0.2f, 0.2f, 0.2f, 1.0f ); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + framebuffer_swap((FramebufferState*)window); + + if (out_w) *out_w = 1920; + if (out_h) *out_h = 1080; + + return (FramebufferState*)window; +} + +void framebuffer_set_power(FramebufferState *s, int mode) { +} + +void framebuffer_swap(FramebufferState *s) { + glfwSwapBuffers((GLFWwindow*)s); +} + +void touch_init(TouchState *s) { + printf("touch_init\n"); +} + +int touch_poll(TouchState *s, int* out_x, int* out_y, int timeout) { + return -1; +} + +int touch_read(TouchState *s, int* out_x, int* out_y) { + return -1; +} + +} + +#include "sound.hpp" + +void ui_sound_init() {} +void ui_sound_destroy() {} + +void set_volume(int volume) {} + +void play_alert_sound(AudibleAlert alert) {} +void stop_alert_sound(AudibleAlert alert) {} + +#include "common/visionimg.h" +#include + +GLuint visionimg_to_gl(const VisionImg *img, EGLImageKHR *pkhr, void **pph) { + unsigned int texture; + glGenTextures(1, &texture); + glBindTexture(GL_TEXTURE_2D, texture); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, *pph); + glGenerateMipmap(GL_TEXTURE_2D); + *pkhr = (EGLImageKHR *)1; // not NULL + return texture; +} + +void visionimg_destroy_gl(EGLImageKHR khr, void *ph) { + // empty +} + diff --git a/selfdrive/ui/paint.cc b/selfdrive/ui/paint.cc new file mode 100644 index 0000000000..0728a5eab3 --- /dev/null +++ b/selfdrive/ui/paint.cc @@ -0,0 +1,1050 @@ +#include +#include "ui.hpp" + +#include "common/util.h" + +#define NANOVG_GLES3_IMPLEMENTATION + +#include "nanovg_gl.h" +#include "nanovg_gl_utils.h" + +extern "C"{ +#include "common/glutil.h" +} + +// TODO: this is also hardcoded in common/transformations/camera.py +const mat3 intrinsic_matrix = (mat3){{ + 910., 0., 582., + 0., 910., 437., + 0., 0., 1. +}}; + +const uint8_t alert_colors[][4] = { + [STATUS_STOPPED] = {0x07, 0x23, 0x39, 0xf1}, + [STATUS_DISENGAGED] = {0x17, 0x33, 0x49, 0xc8}, + [STATUS_ENGAGED] = {0x17, 0x86, 0x44, 0xf1}, + [STATUS_WARNING] = {0xDA, 0x6F, 0x25, 0xf1}, + [STATUS_ALERT] = {0xC9, 0x22, 0x31, 0xf1}, +}; + +const int alert_sizes[] = { + [ALERTSIZE_NONE] = 0, + [ALERTSIZE_SMALL] = 241, + [ALERTSIZE_MID] = 390, + [ALERTSIZE_FULL] = vwp_h, +}; + +// Projects a point in car to space to the corresponding point in full frame +// image space. +vec3 car_space_to_full_frame(const UIState *s, vec4 car_space_projective) { + const UIScene *scene = &s->scene; + + // We'll call the car space point p. + // First project into normalized image coordinates with the extrinsics matrix. + const vec4 Ep4 = matvecmul(scene->extrinsic_matrix, car_space_projective); + + // The last entry is zero because of how we store E (to use matvecmul). + const vec3 Ep = {{Ep4.v[0], Ep4.v[1], Ep4.v[2]}}; + const vec3 KEp = matvecmul3(intrinsic_matrix, Ep); + + // Project. + const vec3 p_image = {{KEp.v[0] / KEp.v[2], KEp.v[1] / KEp.v[2], 1.}}; + return p_image; +} + +// Calculate an interpolation between two numbers at a specific increment +static float lerp(float v0, float v1, float t) { + return (1 - t) * v0 + t * v1; +} + +static void draw_chevron(UIState *s, float x_in, float y_in, float sz, + NVGcolor fillColor, NVGcolor glowColor) { + const UIScene *scene = &s->scene; + + nvgSave(s->vg); + + nvgTranslate(s->vg, 240.0f, 0.0); + nvgTranslate(s->vg, -1440.0f / 2, -1080.0f / 2); + nvgScale(s->vg, 2.0, 2.0); + nvgScale(s->vg, 1440.0f / s->rgb_width, 1080.0f / s->rgb_height); + + const vec4 p_car_space = (vec4){{x_in, y_in, 0., 1.}}; + const vec3 p_full_frame = car_space_to_full_frame(s, p_car_space); + + sz *= 30; + sz /= (x_in / 3 + 30); + if (sz > 30) sz = 30; + if (sz < 15) sz = 15; + + float x = p_full_frame.v[0]; + float y = p_full_frame.v[1]; + + // glow + nvgBeginPath(s->vg); + float g_xo = sz/5; + float g_yo = sz/10; + if (x >= 0 && y >= 0.) { + nvgMoveTo(s->vg, x+(sz*1.35)+g_xo, y+sz+g_yo); + nvgLineTo(s->vg, x, y-g_xo); + nvgLineTo(s->vg, x-(sz*1.35)-g_xo, y+sz+g_yo); + nvgLineTo(s->vg, x+(sz*1.35)+g_xo, y+sz+g_yo); + nvgClosePath(s->vg); + } + nvgFillColor(s->vg, glowColor); + nvgFill(s->vg); + + // chevron + nvgBeginPath(s->vg); + if (x >= 0 && y >= 0.) { + nvgMoveTo(s->vg, x+(sz*1.25), y+sz); + nvgLineTo(s->vg, x, y); + nvgLineTo(s->vg, x-(sz*1.25), y+sz); + nvgLineTo(s->vg, x+(sz*1.25), y+sz); + nvgClosePath(s->vg); + } + nvgFillColor(s->vg, fillColor); + nvgFill(s->vg); + + nvgRestore(s->vg); +} + +static void ui_draw_lane_line(UIState *s, const model_path_vertices_data *pvd, NVGcolor color) { + const UIScene *scene = &s->scene; + + nvgSave(s->vg); + nvgTranslate(s->vg, 240.0f, 0.0); // rgb-box space + nvgTranslate(s->vg, -1440.0f / 2, -1080.0f / 2); // zoom 2x + nvgScale(s->vg, 2.0, 2.0); + nvgScale(s->vg, 1440.0f / s->rgb_width, 1080.0f / s->rgb_height); + nvgBeginPath(s->vg); + + bool started = false; + for (int i=0; icnt; i++) { + if (pvd->v[i].x < 0 || pvd->v[i].y < 0.) { + continue; + } + if (!started) { + nvgMoveTo(s->vg, pvd->v[i].x, pvd->v[i].y); + started = true; + } else { + nvgLineTo(s->vg, pvd->v[i].x, pvd->v[i].y); + } + } + + nvgClosePath(s->vg); + nvgFillColor(s->vg, color); + nvgFill(s->vg); + nvgRestore(s->vg); +} + +static void update_track_data(UIState *s, bool is_mpc, track_vertices_data *pvd) { + const UIScene *scene = &s->scene; + const PathData path = scene->model.path; + const float *mpc_x_coords = &scene->mpc_x[0]; + const float *mpc_y_coords = &scene->mpc_y[0]; + + bool started = false; + float off = is_mpc?0.3:0.5; + float lead_d = scene->lead_d_rel*2.; + float path_height = is_mpc?(lead_d>5.)?fmin(lead_d, 25.)-fmin(lead_d*0.35, 10.):20. + :(lead_d>0.)?fmin(lead_d, 50.)-fmin(lead_d*0.35, 10.):49.; + pvd->cnt = 0; + // left side up + for (int i=0; i<=path_height; i++) { + float px, py, mpx; + if (is_mpc) { + mpx = i==0?0.0:mpc_x_coords[i]; + px = lerp(mpx+1.0, mpx, i/100.0); + py = mpc_y_coords[i] - off; + } else { + px = lerp(i+1.0, i, i/100.0); + py = path.points[i] - off; + } + + vec4 p_car_space = (vec4){{px, py, 0., 1.}}; + vec3 p_full_frame = car_space_to_full_frame(s, p_car_space); + if (p_full_frame.v[0] < 0. || p_full_frame.v[1] < 0.) { + continue; + } + pvd->v[pvd->cnt].x = p_full_frame.v[0]; + pvd->v[pvd->cnt].y = p_full_frame.v[1]; + pvd->cnt += 1; + } + + // right side down + for (int i=path_height; i>=0; i--) { + float px, py, mpx; + if (is_mpc) { + mpx = i==0?0.0:mpc_x_coords[i]; + px = lerp(mpx+1.0, mpx, i/100.0); + py = mpc_y_coords[i] + off; + } else { + px = lerp(i+1.0, i, i/100.0); + py = path.points[i] + off; + } + + vec4 p_car_space = (vec4){{px, py, 0., 1.}}; + vec3 p_full_frame = car_space_to_full_frame(s, p_car_space); + pvd->v[pvd->cnt].x = p_full_frame.v[0]; + pvd->v[pvd->cnt].y = p_full_frame.v[1]; + pvd->cnt += 1; + } +} + +static void update_all_track_data(UIState *s) { + const UIScene *scene = &s->scene; + // Draw vision path + update_track_data(s, false, &s->track_vertices[0]); + + if (scene->engaged) { + // Draw MPC path when engaged + update_track_data(s, true, &s->track_vertices[1]); + } +} + + +static void ui_draw_track(UIState *s, bool is_mpc, track_vertices_data *pvd) { +const UIScene *scene = &s->scene; + const PathData path = scene->model.path; + const float *mpc_x_coords = &scene->mpc_x[0]; + const float *mpc_y_coords = &scene->mpc_y[0]; + + nvgSave(s->vg); + nvgTranslate(s->vg, 240.0f, 0.0); // rgb-box space + nvgTranslate(s->vg, -1440.0f / 2, -1080.0f / 2); // zoom 2x + nvgScale(s->vg, 2.0, 2.0); + nvgScale(s->vg, 1440.0f / s->rgb_width, 1080.0f / s->rgb_height); + nvgBeginPath(s->vg); + + bool started = false; + float off = is_mpc?0.3:0.5; + float lead_d = scene->lead_d_rel*2.; + float path_height = is_mpc?(lead_d>5.)?fmin(lead_d, 25.)-fmin(lead_d*0.35, 10.):20. + :(lead_d>0.)?fmin(lead_d, 50.)-fmin(lead_d*0.35, 10.):49.; + int vi = 0; + for(int i = 0;i < pvd->cnt;i++) { + if (pvd->v[i].x < 0 || pvd->v[i].y < 0) { + continue; + } + + if (!started) { + nvgMoveTo(s->vg, pvd->v[i].x, pvd->v[i].y); + started = true; + } else { + nvgLineTo(s->vg, pvd->v[i].x, pvd->v[i].y); + } + } + + nvgClosePath(s->vg); + + NVGpaint track_bg; + if (is_mpc) { + // Draw colored MPC track + const uint8_t *clr = bg_colors[s->status]; + track_bg = nvgLinearGradient(s->vg, vwp_w, vwp_h, vwp_w, vwp_h*.4, + nvgRGBA(clr[0], clr[1], clr[2], 255), nvgRGBA(clr[0], clr[1], clr[2], 255/2)); + } else { + // Draw white vision track + track_bg = nvgLinearGradient(s->vg, vwp_w, vwp_h, vwp_w, vwp_h*.4, + nvgRGBA(255, 255, 255, 255), nvgRGBA(255, 255, 255, 0)); + } + + nvgFillPaint(s->vg, track_bg); + nvgFill(s->vg); + nvgRestore(s->vg); +} + +static void draw_steering(UIState *s, float curvature) { + float points[50]; + for (int i = 0; i < 50; i++) { + float y_actual = i * tan(asin(clamp(i * curvature, -0.999, 0.999)) / 2.); + points[i] = y_actual; + } + + // ui_draw_lane_edge(s, points, 0.0, nvgRGBA(0, 0, 255, 128), 5); +} + +static void draw_frame(UIState *s) { + const UIScene *scene = &s->scene; + + float x1, x2, y1, y2; + if (s->scene.frontview) { + glBindVertexArray(s->frame_vao[1]); + } else { + glBindVertexArray(s->frame_vao[0]); + } + + mat4 *out_mat; + if (s->scene.frontview || s->scene.fullview) { + out_mat = &s->front_frame_mat; + } else { + out_mat = &s->rear_frame_mat; + } + glActiveTexture(GL_TEXTURE0); + if (s->scene.frontview && s->cur_vision_front_idx >= 0) { + glBindTexture(GL_TEXTURE_2D, s->frame_front_texs[s->cur_vision_front_idx]); + } else if (!scene->frontview && s->cur_vision_idx >= 0) { + glBindTexture(GL_TEXTURE_2D, s->frame_texs[s->cur_vision_idx]); + #ifndef QCOM + // TODO: a better way to do this? + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1164, 874, 0, GL_RGB, GL_UNSIGNED_BYTE, s->priv_hnds[s->cur_vision_idx]); + #endif + } + + glUseProgram(s->frame_program); + glUniform1i(s->frame_texture_loc, 0); + glUniformMatrix4fv(s->frame_transform_loc, 1, GL_TRUE, out_mat->v); + + assert(glGetError() == GL_NO_ERROR); + glEnableVertexAttribArray(0); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, (const void*)0); + glDisableVertexAttribArray(0); + glBindVertexArray(0); +} + +static inline bool valid_frame_pt(UIState *s, float x, float y) { + return x >= 0 && x <= s->rgb_width && y >= 0 && y <= s->rgb_height; + +} +static void update_lane_line_data(UIState *s, const float *points, float off, bool is_ghost, model_path_vertices_data *pvd) { + pvd->cnt = 0; + for (int i = 0; i < MODEL_PATH_MAX_VERTICES_CNT / 2; i++) { + float px = (float)i; + float py = points[i] - off; + const vec4 p_car_space = (vec4){{px, py, 0., 1.}}; + const vec3 p_full_frame = car_space_to_full_frame(s, p_car_space); + if(!valid_frame_pt(s, p_full_frame.v[0], p_full_frame.v[1])) + continue; + pvd->v[pvd->cnt].x = p_full_frame.v[0]; + pvd->v[pvd->cnt].y = p_full_frame.v[1]; + pvd->cnt += 1; + } + for (int i = MODEL_PATH_MAX_VERTICES_CNT / 2; i > 0; i--) { + float px = (float)i; + float py = is_ghost?(points[i]-off):(points[i]+off); + const vec4 p_car_space = (vec4){{px, py, 0., 1.}}; + const vec3 p_full_frame = car_space_to_full_frame(s, p_car_space); + if(!valid_frame_pt(s, p_full_frame.v[0], p_full_frame.v[1])) + continue; + pvd->v[pvd->cnt].x = p_full_frame.v[0]; + pvd->v[pvd->cnt].y = p_full_frame.v[1]; + pvd->cnt += 1; + } +} + +static void update_all_lane_lines_data(UIState *s, const PathData path, model_path_vertices_data *pstart) { + update_lane_line_data(s, path.points, 0.025*path.prob, false, pstart); + float var = fmin(path.std, 0.7); + update_lane_line_data(s, path.points, -var, true, pstart + 1); + update_lane_line_data(s, path.points, var, true, pstart + 2); +} + +static void ui_draw_lane(UIState *s, const PathData *path, model_path_vertices_data *pstart, NVGcolor color) { + ui_draw_lane_line(s, pstart, color); + float var = fmin(path->std, 0.7); + color.a /= 4; + ui_draw_lane_line(s, pstart + 1, color); + ui_draw_lane_line(s, pstart + 2, color); +} + +static void ui_draw_vision_lanes(UIState *s) { + const UIScene *scene = &s->scene; + model_path_vertices_data *pvd = &s->model_path_vertices[0]; + if(s->model_changed) { + update_all_lane_lines_data(s, scene->model.left_lane, pvd); + update_all_lane_lines_data(s, scene->model.right_lane, pvd + MODEL_LANE_PATH_CNT); + s->model_changed = false; + } + // Draw left lane edge + ui_draw_lane( + s, &scene->model.left_lane, + pvd, + nvgRGBAf(1.0, 1.0, 1.0, scene->model.left_lane.prob)); + + // Draw right lane edge + ui_draw_lane( + s, &scene->model.right_lane, + pvd + MODEL_LANE_PATH_CNT, + nvgRGBAf(1.0, 1.0, 1.0, scene->model.right_lane.prob)); + + if(s->livempc_or_radarstate_changed) { + update_all_track_data(s); + s->livempc_or_radarstate_changed = false; + } + // Draw vision path + ui_draw_track(s, false, &s->track_vertices[0]); + if (scene->engaged) { + // Draw MPC path when engaged + ui_draw_track(s, true, &s->track_vertices[1]); + } +} + +// Draw all world space objects. +static void ui_draw_world(UIState *s) { + const UIScene *scene = &s->scene; + if (!scene->world_objects_visible) { + return; + } + + // Draw lane edges and vision/mpc tracks + ui_draw_vision_lanes(s); + + if (scene->lead_status) { + // Draw lead car indicator + float fillAlpha = 0; + float speedBuff = 10.; + float leadBuff = 40.; + if (scene->lead_d_rel < leadBuff) { + fillAlpha = 255*(1.0-(scene->lead_d_rel/leadBuff)); + if (scene->lead_v_rel < 0) { + fillAlpha += 255*(-1*(scene->lead_v_rel/speedBuff)); + } + fillAlpha = (int)(fmin(fillAlpha, 255)); + } + draw_chevron(s, scene->lead_d_rel+2.7, scene->lead_y_rel, 25, + nvgRGBA(201, 34, 49, fillAlpha), nvgRGBA(218, 202, 37, 255)); + } +} + +static void ui_draw_vision_maxspeed(UIState *s) { + /*if (!s->longitudinal_control){ + return; + }*/ + + const UIScene *scene = &s->scene; + int ui_viz_rx = scene->ui_viz_rx; + int ui_viz_rw = scene->ui_viz_rw; + + char maxspeed_str[32]; + float maxspeed = s->scene.v_cruise; + int maxspeed_calc = maxspeed * 0.6225 + 0.5; + float speedlimit = s->scene.speedlimit; + int speedlim_calc = speedlimit * 2.2369363 + 0.5; + int speed_lim_off = s->speed_lim_off * 2.2369363 + 0.5; + if (s->is_metric) { + maxspeed_calc = maxspeed + 0.5; + speedlim_calc = speedlimit * 3.6 + 0.5; + speed_lim_off = s->speed_lim_off * 3.6 + 0.5; + } + + bool is_cruise_set = (maxspeed != 0 && maxspeed != SET_SPEED_NA); + bool is_speedlim_valid = s->scene.speedlimit_valid; + bool is_set_over_limit = is_speedlim_valid && s->scene.engaged && + is_cruise_set && maxspeed_calc > (speedlim_calc + speed_lim_off); + + int viz_maxspeed_w = 184; + int viz_maxspeed_h = 202; + int viz_maxspeed_x = (ui_viz_rx + (bdr_s*2)); + int viz_maxspeed_y = (box_y + (bdr_s*1.5)); + int viz_maxspeed_xo = 180; + +#ifdef SHOW_SPEEDLIMIT + viz_maxspeed_w += viz_maxspeed_xo; + viz_maxspeed_x += viz_maxspeed_w - (viz_maxspeed_xo * 2); +#else + viz_maxspeed_xo = 0; +#endif + + // Draw Background + nvgBeginPath(s->vg); + nvgRoundedRect(s->vg, viz_maxspeed_x, viz_maxspeed_y, viz_maxspeed_w, viz_maxspeed_h, 30); + if (is_set_over_limit) { + nvgFillColor(s->vg, nvgRGBA(218, 111, 37, 180)); + } else { + nvgFillColor(s->vg, nvgRGBA(0, 0, 0, 100)); + } + nvgFill(s->vg); + + // Draw Border + nvgBeginPath(s->vg); + nvgRoundedRect(s->vg, viz_maxspeed_x, viz_maxspeed_y, viz_maxspeed_w, viz_maxspeed_h, 20); + if (is_set_over_limit) { + nvgStrokeColor(s->vg, nvgRGBA(218, 111, 37, 255)); + } else if (is_speedlim_valid && !s->is_ego_over_limit) { + nvgStrokeColor(s->vg, nvgRGBA(255, 255, 255, 255)); + } else if (is_speedlim_valid && s->is_ego_over_limit) { + nvgStrokeColor(s->vg, nvgRGBA(255, 255, 255, 20)); + } else { + nvgStrokeColor(s->vg, nvgRGBA(255, 255, 255, 100)); + } + nvgStrokeWidth(s->vg, 10); + nvgStroke(s->vg); + + // Draw "MAX" Text + nvgTextAlign(s->vg, NVG_ALIGN_CENTER | NVG_ALIGN_BASELINE); + nvgFontFace(s->vg, "sans-regular"); + nvgFontSize(s->vg, 26*2.5); + if (is_cruise_set) { + nvgFillColor(s->vg, nvgRGBA(255, 255, 255, 200)); + } else { + nvgFillColor(s->vg, nvgRGBA(255, 255, 255, 100)); + } + nvgText(s->vg, viz_maxspeed_x+(viz_maxspeed_xo/2)+(viz_maxspeed_w/2), 148, "MAX", NULL); + + // Draw Speed Text + nvgFontFace(s->vg, "sans-bold"); + nvgFontSize(s->vg, 48*2.5); + if (is_cruise_set) { + snprintf(maxspeed_str, sizeof(maxspeed_str), "%d", maxspeed_calc); + nvgFillColor(s->vg, nvgRGBA(255, 255, 255, 255)); + nvgText(s->vg, viz_maxspeed_x+(viz_maxspeed_xo/2)+(viz_maxspeed_w/2), 242, maxspeed_str, NULL); + } else { + nvgFontFace(s->vg, "sans-semibold"); + nvgFontSize(s->vg, 42*2.5); + nvgFillColor(s->vg, nvgRGBA(255, 255, 255, 100)); + nvgText(s->vg, viz_maxspeed_x+(viz_maxspeed_xo/2)+(viz_maxspeed_w/2), 242, "N/A", NULL); + } + +} + +static void ui_draw_vision_speedlimit(UIState *s) { + const UIScene *scene = &s->scene; + int ui_viz_rx = scene->ui_viz_rx; + int ui_viz_rw = scene->ui_viz_rw; + + char speedlim_str[32]; + float speedlimit = s->scene.speedlimit; + int speedlim_calc = speedlimit * 2.2369363 + 0.5; + if (s->is_metric) { + speedlim_calc = speedlimit * 3.6 + 0.5; + } + + bool is_speedlim_valid = s->scene.speedlimit_valid; + float hysteresis_offset = 0.5; + if (s->is_ego_over_limit) { + hysteresis_offset = 0.0; + } + s->is_ego_over_limit = is_speedlim_valid && s->scene.v_ego > (speedlimit + s->speed_lim_off + hysteresis_offset); + + int viz_speedlim_w = 180; + int viz_speedlim_h = 202; + int viz_speedlim_x = (ui_viz_rx + (bdr_s*2)); + int viz_speedlim_y = (box_y + (bdr_s*1.5)); + if (!is_speedlim_valid) { + viz_speedlim_w -= 5; + viz_speedlim_h -= 10; + viz_speedlim_x += 9; + viz_speedlim_y += 5; + } + int viz_speedlim_bdr = is_speedlim_valid ? 30 : 15; + + // Draw Background + nvgBeginPath(s->vg); + nvgRoundedRect(s->vg, viz_speedlim_x, viz_speedlim_y, viz_speedlim_w, viz_speedlim_h, viz_speedlim_bdr); + if (is_speedlim_valid && s->is_ego_over_limit) { + nvgFillColor(s->vg, nvgRGBA(218, 111, 37, 180)); + } else if (is_speedlim_valid) { + nvgFillColor(s->vg, nvgRGBA(255, 255, 255, 255)); + } else { + nvgFillColor(s->vg, nvgRGBA(255, 255, 255, 100)); + } + nvgFill(s->vg); + + // Draw Border + if (is_speedlim_valid) { + nvgStrokeWidth(s->vg, 10); + nvgStroke(s->vg); + nvgBeginPath(s->vg); + nvgRoundedRect(s->vg, viz_speedlim_x, viz_speedlim_y, viz_speedlim_w, viz_speedlim_h, 20); + if (s->is_ego_over_limit) { + nvgStrokeColor(s->vg, nvgRGBA(218, 111, 37, 255)); + } else if (is_speedlim_valid) { + nvgStrokeColor(s->vg, nvgRGBA(255, 255, 255, 255)); + } + } + + // Draw "Speed Limit" Text + nvgTextAlign(s->vg, NVG_ALIGN_CENTER | NVG_ALIGN_BASELINE); + nvgFontFace(s->vg, "sans-semibold"); + nvgFontSize(s->vg, 50); + nvgFillColor(s->vg, nvgRGBA(0, 0, 0, 255)); + if (is_speedlim_valid && s->is_ego_over_limit) { + nvgFillColor(s->vg, nvgRGBA(255, 255, 255, 255)); + } + nvgText(s->vg, viz_speedlim_x+viz_speedlim_w/2 + (is_speedlim_valid ? 6 : 0), viz_speedlim_y + (is_speedlim_valid ? 50 : 45), "SMART", NULL); + nvgText(s->vg, viz_speedlim_x+viz_speedlim_w/2 + (is_speedlim_valid ? 6 : 0), viz_speedlim_y + (is_speedlim_valid ? 90 : 85), "SPEED", NULL); + + // Draw Speed Text + nvgFontFace(s->vg, "sans-bold"); + nvgFontSize(s->vg, 48*2.5); + if (s->is_ego_over_limit) { + nvgFillColor(s->vg, nvgRGBA(255, 255, 255, 255)); + } else { + nvgFillColor(s->vg, nvgRGBA(0, 0, 0, 255)); + } + if (is_speedlim_valid) { + snprintf(speedlim_str, sizeof(speedlim_str), "%d", speedlim_calc); + nvgText(s->vg, viz_speedlim_x+viz_speedlim_w/2, viz_speedlim_y + (is_speedlim_valid ? 170 : 165), speedlim_str, NULL); + } else { + nvgFontFace(s->vg, "sans-semibold"); + nvgFontSize(s->vg, 42*2.5); + nvgText(s->vg, viz_speedlim_x+viz_speedlim_w/2, viz_speedlim_y + (is_speedlim_valid ? 170 : 165), "N/A", NULL); + } +} + +static void ui_draw_vision_speed(UIState *s) { + const UIScene *scene = &s->scene; + int ui_viz_rx = scene->ui_viz_rx; + int ui_viz_rw = scene->ui_viz_rw; + float speed = s->scene.v_ego; + + const int viz_speed_w = 280; + const int viz_speed_x = ui_viz_rx+((ui_viz_rw/2)-(viz_speed_w/2)); + char speed_str[32]; + + nvgBeginPath(s->vg); + nvgRect(s->vg, viz_speed_x, box_y, viz_speed_w, header_h); + nvgTextAlign(s->vg, NVG_ALIGN_CENTER | NVG_ALIGN_BASELINE); + + if (s->is_metric) { + snprintf(speed_str, sizeof(speed_str), "%d", (int)(speed * 3.6 + 0.5)); + } else { + snprintf(speed_str, sizeof(speed_str), "%d", (int)(speed * 2.2369363 + 0.5)); + } + nvgFontFace(s->vg, "sans-bold"); + nvgFontSize(s->vg, 96*2.5); + nvgFillColor(s->vg, nvgRGBA(255, 255, 255, 255)); + nvgText(s->vg, viz_speed_x+viz_speed_w/2, 240, speed_str, NULL); + + nvgFontFace(s->vg, "sans-regular"); + nvgFontSize(s->vg, 36*2.5); + nvgFillColor(s->vg, nvgRGBA(255, 255, 255, 200)); + + if (s->is_metric) { + nvgText(s->vg, viz_speed_x+viz_speed_w/2, 320, "kph", NULL); + } else { + nvgText(s->vg, viz_speed_x+viz_speed_w/2, 320, "mph", NULL); + } +} + +static void ui_draw_vision_event(UIState *s) { + const UIScene *scene = &s->scene; + const int ui_viz_rx = scene->ui_viz_rx; + const int ui_viz_rw = scene->ui_viz_rw; + const int viz_event_w = 220; + const int viz_event_x = ((ui_viz_rx + ui_viz_rw) - (viz_event_w + (bdr_s*2))); + const int viz_event_y = (box_y + (bdr_s*1.5)); + const int viz_event_h = (header_h - (bdr_s*1.5)); + if (s->scene.decel_for_model && s->scene.engaged) { + // draw winding road sign + const int img_turn_size = 160*1.5; + const int img_turn_x = viz_event_x-(img_turn_size/4); + const int img_turn_y = viz_event_y+bdr_s-25; + float img_turn_alpha = 1.0f; + nvgBeginPath(s->vg); + NVGpaint imgPaint = nvgImagePattern(s->vg, img_turn_x, img_turn_y, + img_turn_size, img_turn_size, 0, s->img_turn, img_turn_alpha); + nvgRect(s->vg, img_turn_x, img_turn_y, img_turn_size, img_turn_size); + nvgFillPaint(s->vg, imgPaint); + nvgFill(s->vg); + } else { + // draw steering wheel + const int bg_wheel_size = 96; + const int bg_wheel_x = viz_event_x + (viz_event_w-bg_wheel_size); + const int bg_wheel_y = viz_event_y + (bg_wheel_size/2); + const int img_wheel_size = bg_wheel_size*1.5; + const int img_wheel_x = bg_wheel_x-(img_wheel_size/2); + const int img_wheel_y = bg_wheel_y-25; + float img_wheel_alpha = 0.1f; + bool is_engaged = (s->status == STATUS_ENGAGED); + bool is_warning = (s->status == STATUS_WARNING); + bool is_engageable = scene->engageable; + if (is_engaged || is_warning || is_engageable) { + nvgBeginPath(s->vg); + nvgCircle(s->vg, bg_wheel_x, (bg_wheel_y + (bdr_s*1.5)), bg_wheel_size); + if (is_engaged) { + nvgFillColor(s->vg, nvgRGBA(23, 134, 68, 255)); + } else if (is_warning) { + nvgFillColor(s->vg, nvgRGBA(218, 111, 37, 255)); + } else if (is_engageable) { + nvgFillColor(s->vg, nvgRGBA(23, 51, 73, 255)); + } + nvgFill(s->vg); + img_wheel_alpha = 1.0f; + } + nvgBeginPath(s->vg); + NVGpaint imgPaint = nvgImagePattern(s->vg, img_wheel_x, img_wheel_y, + img_wheel_size, img_wheel_size, 0, s->img_wheel, img_wheel_alpha); + nvgRect(s->vg, img_wheel_x, img_wheel_y, img_wheel_size, img_wheel_size); + nvgFillPaint(s->vg, imgPaint); + nvgFill(s->vg); + } +} + +static void ui_draw_vision_map(UIState *s) { + const UIScene *scene = &s->scene; + const int map_size = 96; + const int map_x = (scene->ui_viz_rx + (map_size * 3) + (bdr_s * 3)); + const int map_y = (footer_y + ((footer_h - map_size) / 2)); + const int map_img_size = (map_size * 1.5); + const int map_img_x = (map_x - (map_img_size / 2)); + const int map_img_y = (map_y - (map_size / 4)); + + bool map_valid = s->scene.map_valid; + float map_img_alpha = map_valid ? 1.0f : 0.15f; + float map_bg_alpha = map_valid ? 0.3f : 0.1f; + NVGcolor map_bg = nvgRGBA(0, 0, 0, (255 * map_bg_alpha)); + NVGpaint map_img = nvgImagePattern(s->vg, map_img_x, map_img_y, + map_img_size, map_img_size, 0, s->img_map, map_img_alpha); + + nvgBeginPath(s->vg); + nvgCircle(s->vg, map_x, (map_y + (bdr_s * 1.5)), map_size); + nvgFillColor(s->vg, map_bg); + nvgFill(s->vg); + + nvgBeginPath(s->vg); + nvgRect(s->vg, map_img_x, map_img_y, map_img_size, map_img_size); + nvgFillPaint(s->vg, map_img); + nvgFill(s->vg); +} + +static void ui_draw_vision_face(UIState *s) { + const UIScene *scene = &s->scene; + const int face_size = 96; + const int face_x = (scene->ui_viz_rx + face_size + (bdr_s * 2)); + const int face_y = (footer_y + ((footer_h - face_size) / 2)); + const int face_img_size = (face_size * 1.5); + const int face_img_x = (face_x - (face_img_size / 2)); + const int face_img_y = (face_y - (face_size / 4)); + float face_img_alpha = scene->monitoring_active ? 1.0f : 0.15f; + float face_bg_alpha = scene->monitoring_active ? 0.3f : 0.1f; + NVGcolor face_bg = nvgRGBA(0, 0, 0, (255 * face_bg_alpha)); + NVGpaint face_img = nvgImagePattern(s->vg, face_img_x, face_img_y, + face_img_size, face_img_size, 0, s->img_face, face_img_alpha); + + nvgBeginPath(s->vg); + nvgCircle(s->vg, face_x, (face_y + (bdr_s * 1.5)), face_size); + nvgFillColor(s->vg, face_bg); + nvgFill(s->vg); + + nvgBeginPath(s->vg); + nvgRect(s->vg, face_img_x, face_img_y, face_img_size, face_img_size); + nvgFillPaint(s->vg, face_img); + nvgFill(s->vg); +} + +static void ui_draw_vision_header(UIState *s) { + const UIScene *scene = &s->scene; + int ui_viz_rx = scene->ui_viz_rx; + int ui_viz_rw = scene->ui_viz_rw; + + nvgBeginPath(s->vg); + NVGpaint gradient = nvgLinearGradient(s->vg, ui_viz_rx, + (box_y+(header_h-(header_h/2.5))), + ui_viz_rx, box_y+header_h, + nvgRGBAf(0,0,0,0.45), nvgRGBAf(0,0,0,0)); + nvgFillPaint(s->vg, gradient); + nvgRect(s->vg, ui_viz_rx, box_y, ui_viz_rw, header_h); + nvgFill(s->vg); + + ui_draw_vision_maxspeed(s); + +#ifdef SHOW_SPEEDLIMIT + ui_draw_vision_speedlimit(s); +#endif + ui_draw_vision_speed(s); + ui_draw_vision_event(s); +} + +static void ui_draw_vision_footer(UIState *s) { + const UIScene *scene = &s->scene; + int ui_viz_rx = scene->ui_viz_rx; + int ui_viz_rw = scene->ui_viz_rw; + + nvgBeginPath(s->vg); + nvgRect(s->vg, ui_viz_rx, footer_y, ui_viz_rw, footer_h); + + ui_draw_vision_face(s); + +#ifdef SHOW_SPEEDLIMIT + // ui_draw_vision_map(s); +#endif +} + +void ui_draw_vision_alert(UIState *s, int va_size, int va_color, + const char* va_text1, const char* va_text2) { + const UIScene *scene = &s->scene; + int ui_viz_rx = scene->ui_viz_rx; + int ui_viz_rw = scene->ui_viz_rw; + bool hasSidebar = !s->scene.uilayout_sidebarcollapsed; + bool mapEnabled = s->scene.uilayout_mapenabled; + bool longAlert1 = strlen(va_text1) > 15; + + const uint8_t *color = alert_colors[va_color]; + const int alr_s = alert_sizes[va_size]; + const int alr_x = ui_viz_rx-(mapEnabled?(hasSidebar?nav_w:(nav_ww)):0)-bdr_s; + const int alr_w = ui_viz_rw+(mapEnabled?(hasSidebar?nav_w:(nav_ww)):0)+(bdr_s*2); + const int alr_h = alr_s+(va_size==ALERTSIZE_NONE?0:bdr_s); + const int alr_y = vwp_h-alr_h; + + nvgBeginPath(s->vg); + nvgRect(s->vg, alr_x, alr_y, alr_w, alr_h); + nvgFillColor(s->vg, nvgRGBA(color[0],color[1],color[2],(color[3]*s->alert_blinking_alpha))); + nvgFill(s->vg); + + nvgBeginPath(s->vg); + NVGpaint gradient = nvgLinearGradient(s->vg, alr_x, alr_y, alr_x, alr_y+alr_h, + nvgRGBAf(0.0,0.0,0.0,0.05), nvgRGBAf(0.0,0.0,0.0,0.35)); + nvgFillPaint(s->vg, gradient); + nvgRect(s->vg, alr_x, alr_y, alr_w, alr_h); + nvgFill(s->vg); + + nvgFillColor(s->vg, nvgRGBA(255, 255, 255, 255)); + nvgTextAlign(s->vg, NVG_ALIGN_CENTER | NVG_ALIGN_BASELINE); + + if (va_size == ALERTSIZE_SMALL) { + nvgFontFace(s->vg, "sans-semibold"); + nvgFontSize(s->vg, 40*2.5); + nvgText(s->vg, alr_x+alr_w/2, alr_y+alr_h/2+15, va_text1, NULL); + } else if (va_size== ALERTSIZE_MID) { + nvgFontFace(s->vg, "sans-bold"); + nvgFontSize(s->vg, 48*2.5); + nvgText(s->vg, alr_x+alr_w/2, alr_y+alr_h/2-45, va_text1, NULL); + nvgFontFace(s->vg, "sans-regular"); + nvgFontSize(s->vg, 36*2.5); + nvgText(s->vg, alr_x+alr_w/2, alr_y+alr_h/2+75, va_text2, NULL); + } else if (va_size== ALERTSIZE_FULL) { + nvgFontSize(s->vg, (longAlert1?72:96)*2.5); + nvgFontFace(s->vg, "sans-bold"); + nvgTextAlign(s->vg, NVG_ALIGN_CENTER | NVG_ALIGN_MIDDLE); + nvgTextBox(s->vg, alr_x, alr_y+(longAlert1?360:420), alr_w-60, va_text1, NULL); + nvgFontSize(s->vg, 48*2.5); + nvgFontFace(s->vg, "sans-regular"); + nvgTextAlign(s->vg, NVG_ALIGN_CENTER | NVG_ALIGN_BOTTOM); + nvgTextBox(s->vg, alr_x, alr_h-(longAlert1?300:360), alr_w-60, va_text2, NULL); + } +} + +static void ui_draw_vision(UIState *s) { + const UIScene *scene = &s->scene; + int ui_viz_rx = scene->ui_viz_rx; + int ui_viz_rw = scene->ui_viz_rw; + int ui_viz_ro = scene->ui_viz_ro; + + glClearColor(0.0, 0.0, 0.0, 0.0); + glClear(GL_STENCIL_BUFFER_BIT | GL_COLOR_BUFFER_BIT); + + // Draw video frames + glEnable(GL_SCISSOR_TEST); + glViewport(ui_viz_rx+ui_viz_ro, s->fb_h-(box_y+box_h), viz_w, box_h); + glScissor(ui_viz_rx, s->fb_h-(box_y+box_h), ui_viz_rw, box_h); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + draw_frame(s); + glViewport(0, 0, s->fb_w, s->fb_h); + glDisable(GL_SCISSOR_TEST); + + glClear(GL_STENCIL_BUFFER_BIT); + + nvgBeginFrame(s->vg, s->fb_w, s->fb_h, 1.0f); + nvgSave(s->vg); + + // Draw augmented elements + const int inner_height = viz_w*9/16; + nvgScissor(s->vg, ui_viz_rx, box_y, ui_viz_rw, box_h); + nvgTranslate(s->vg, ui_viz_rx+ui_viz_ro, box_y + (box_h-inner_height)/2.0); + nvgScale(s->vg, (float)viz_w / s->fb_w, (float)inner_height / s->fb_h); + if (!scene->frontview && !scene->fullview) { + ui_draw_world(s); + } + + nvgRestore(s->vg); + + // Set Speed, Current Speed, Status/Events + ui_draw_vision_header(s); + + if (s->scene.alert_size != ALERTSIZE_NONE) { + // Controls Alerts + ui_draw_vision_alert(s, s->scene.alert_size, s->status, + s->scene.alert_text1, s->scene.alert_text2); + } else { + ui_draw_vision_footer(s); + } + + + nvgEndFrame(s->vg); + glDisable(GL_BLEND); +} + +static void ui_draw_blank(UIState *s) { + glClearColor(0.0, 0.0, 0.0, 0.0); + glClear(GL_STENCIL_BUFFER_BIT | GL_COLOR_BUFFER_BIT); +} + +void ui_draw(UIState *s) { + if (s->vision_connected && s->active_app == cereal_UiLayoutState_App_home && s->status != STATUS_STOPPED) { + ui_draw_vision(s); + } else { + ui_draw_blank(s); + } + + { + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glClear(GL_STENCIL_BUFFER_BIT); + + nvgBeginFrame(s->vg, s->fb_w, s->fb_h, 1.0f); + + nvgEndFrame(s->vg); + glDisable(GL_BLEND); + } +} + +static const char frame_vertex_shader[] = + "attribute vec4 aPosition;\n" + "attribute vec4 aTexCoord;\n" + "uniform mat4 uTransform;\n" + "varying vec4 vTexCoord;\n" + "void main() {\n" + " gl_Position = uTransform * aPosition;\n" + " vTexCoord = aTexCoord;\n" + "}\n"; + +static const char frame_fragment_shader[] = + "precision mediump float;\n" + "uniform sampler2D uTexture;\n" + "varying vec4 vTexCoord;\n" + "void main() {\n" + " gl_FragColor = texture2D(uTexture, vTexCoord.xy);\n" + "}\n"; + +static const char line_vertex_shader[] = + "attribute vec4 aPosition;\n" + "attribute vec4 aColor;\n" + "uniform mat4 uTransform;\n" + "varying vec4 vColor;\n" + "void main() {\n" + " gl_Position = uTransform * aPosition;\n" + " vColor = aColor;\n" + "}\n"; + +static const char line_fragment_shader[] = + "precision mediump float;\n" + "uniform sampler2D uTexture;\n" + "varying vec4 vColor;\n" + "void main() {\n" + " gl_FragColor = vColor;\n" + "}\n"; + +static const mat4 device_transform = {{ + 1.0, 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, + 0.0, 0.0, 0.0, 1.0, +}}; + +// frame from 4/3 to box size with a 2x zoom +static const mat4 frame_transform = {{ + 2*(4./3.)/((float)viz_w/box_h), 0.0, 0.0, 0.0, + 0.0, 2.0, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, + 0.0, 0.0, 0.0, 1.0, +}}; + +// frame from 4/3 to 16/9 display +static const mat4 full_to_wide_frame_transform = {{ + .75, 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, + 0.0, 0.0, 0.0, 1.0, +}}; + +void ui_nvg_init(UIState *s) { + // init drawing + s->vg = nvgCreateGLES3(NVG_ANTIALIAS | NVG_STENCIL_STROKES | NVG_DEBUG); + assert(s->vg); + + s->font_courbd = nvgCreateFont(s->vg, "courbd", "../assets/fonts/courbd.ttf"); + assert(s->font_courbd >= 0); + s->font_sans_regular = nvgCreateFont(s->vg, "sans-regular", "../assets/fonts/opensans_regular.ttf"); + assert(s->font_sans_regular >= 0); + s->font_sans_semibold = nvgCreateFont(s->vg, "sans-semibold", "../assets/fonts/opensans_semibold.ttf"); + assert(s->font_sans_semibold >= 0); + s->font_sans_bold = nvgCreateFont(s->vg, "sans-bold", "../assets/fonts/opensans_bold.ttf"); + assert(s->font_sans_bold >= 0); + + assert(s->img_wheel >= 0); + s->img_wheel = nvgCreateImage(s->vg, "../assets/img_chffr_wheel.png", 1); + + assert(s->img_turn >= 0); + s->img_turn = nvgCreateImage(s->vg, "../assets/img_trafficSign_turn.png", 1); + + assert(s->img_face >= 0); + s->img_face = nvgCreateImage(s->vg, "../assets/img_driver_face.png", 1); + + assert(s->img_map >= 0); + s->img_map = nvgCreateImage(s->vg, "../assets/img_map.png", 1); + + // init gl + s->frame_program = load_program(frame_vertex_shader, frame_fragment_shader); + assert(s->frame_program); + + s->frame_pos_loc = glGetAttribLocation(s->frame_program, "aPosition"); + s->frame_texcoord_loc = glGetAttribLocation(s->frame_program, "aTexCoord"); + + s->frame_texture_loc = glGetUniformLocation(s->frame_program, "uTexture"); + s->frame_transform_loc = glGetUniformLocation(s->frame_program, "uTransform"); + + s->line_program = load_program(line_vertex_shader, line_fragment_shader); + assert(s->line_program); + + s->line_pos_loc = glGetAttribLocation(s->line_program, "aPosition"); + s->line_color_loc = glGetAttribLocation(s->line_program, "aColor"); + s->line_transform_loc = glGetUniformLocation(s->line_program, "uTransform"); + + glViewport(0, 0, s->fb_w, s->fb_h); + + glDisable(GL_DEPTH_TEST); + + assert(glGetError() == GL_NO_ERROR); + + for(int i = 0; i < 2; i++) { + float x1, x2, y1, y2; + if (i == 1) { + // flip horizontally so it looks like a mirror + x1 = 0.0; + x2 = 1.0; + y1 = 1.0; + y2 = 0.0; + } else { + x1 = 1.0; + x2 = 0.0; + y1 = 1.0; + y2 = 0.0; + } + const uint8_t frame_indicies[] = {0, 1, 2, 0, 2, 3}; + const float frame_coords[4][4] = { + {-1.0, -1.0, x2, y1}, //bl + {-1.0, 1.0, x2, y2}, //tl + { 1.0, 1.0, x1, y2}, //tr + { 1.0, -1.0, x1, y1}, //br + }; + + glGenVertexArrays(1,&s->frame_vao[i]); + glBindVertexArray(s->frame_vao[i]); + glGenBuffers(1, &s->frame_vbo[i]); + glBindBuffer(GL_ARRAY_BUFFER, s->frame_vbo[i]); + glBufferData(GL_ARRAY_BUFFER, sizeof(frame_coords), frame_coords, GL_STATIC_DRAW); + glEnableVertexAttribArray(s->frame_pos_loc); + glVertexAttribPointer(s->frame_pos_loc, 2, GL_FLOAT, GL_FALSE, + sizeof(frame_coords[0]), (const void *)0); + glEnableVertexAttribArray(s->frame_texcoord_loc); + glVertexAttribPointer(s->frame_texcoord_loc, 2, GL_FLOAT, GL_FALSE, + sizeof(frame_coords[0]), (const void *)(sizeof(float) * 2)); + glGenBuffers(1, &s->frame_ibo[i]); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, s->frame_ibo[i]); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(frame_indicies), frame_indicies, GL_STATIC_DRAW); + glBindBuffer(GL_ARRAY_BUFFER,0); + glBindVertexArray(0); + } + + s->front_frame_mat = matmul(device_transform, full_to_wide_frame_transform); + s->rear_frame_mat = matmul(device_transform, frame_transform); + + for(int i = 0;i < UI_BUF_COUNT; i++) { + s->khr[i] = NULL; + s->priv_hnds[i] = NULL; + s->khr_front[i] = NULL; + s->priv_hnds_front[i] = NULL; + } +} diff --git a/selfdrive/ui/slplay.c b/selfdrive/ui/slplay.c new file mode 100644 index 0000000000..ddfbad56c5 --- /dev/null +++ b/selfdrive/ui/slplay.c @@ -0,0 +1,184 @@ +#include +#include +#include +#include +#include + +#include "common/timing.h" +#include "slplay.h" + +SLEngineItf engineInterface = NULL; +SLObjectItf outputMix = NULL; +SLObjectItf engine = NULL; +uri_player players[32] = {{NULL, NULL, NULL}}; + +uint64_t loop_start = 0; +uint64_t loop_start_ctx = 0; + +uri_player* get_player_by_uri(const char* uri) { + for (uri_player *s = players; s->uri != NULL; s++) { + if (strcmp(s->uri, uri) == 0) { + return s; + } + } + + return NULL; +} + +uri_player* slplay_create_player_for_uri(const char* uri, char **error) { + uri_player player = { uri, NULL, NULL }; + + SLresult result; + SLDataLocator_URI locUri = {SL_DATALOCATOR_URI, (SLchar *) uri}; + SLDataFormat_MIME formatMime = {SL_DATAFORMAT_MIME, NULL, SL_CONTAINERTYPE_UNSPECIFIED}; + SLDataSource audioSrc = {&locUri, &formatMime}; + + SLDataLocator_OutputMix outMix = {SL_DATALOCATOR_OUTPUTMIX, outputMix}; + SLDataSink audioSnk = {&outMix, NULL}; + + result = (*engineInterface)->CreateAudioPlayer(engineInterface, &player.player, &audioSrc, &audioSnk, 0, NULL, NULL); + if (result != SL_RESULT_SUCCESS) { + *error = "Failed to create audio player"; + return NULL; + } + + result = (*(player.player))->Realize(player.player, SL_BOOLEAN_FALSE); + if (result != SL_RESULT_SUCCESS) { + *error = "Failed to realize audio player"; + return NULL; + } + + result = (*(player.player))->GetInterface(player.player, SL_IID_PLAY, &(player.playInterface)); + if (result != SL_RESULT_SUCCESS) { + *error = "Failed to get player interface"; + return NULL; + } + + result = (*(player.playInterface))->SetPlayState(player.playInterface, SL_PLAYSTATE_PAUSED); + if (result != SL_RESULT_SUCCESS) { + *error = "Failed to initialize playstate to SL_PLAYSTATE_PAUSED"; + return NULL; + } + + uri_player *p = players; + while (p->uri != NULL) { + p++; + } + *p = player; + + return p; +} + +void slplay_setup(char **error) { + SLresult result; + SLEngineOption engineOptions[] = {{SL_ENGINEOPTION_THREADSAFE, SL_BOOLEAN_TRUE}}; + result = slCreateEngine(&engine, 1, engineOptions, 0, NULL, NULL); + if (result != SL_RESULT_SUCCESS) { + *error = "Failed to create OpenSL engine"; + } + + result = (*engine)->Realize(engine, SL_BOOLEAN_FALSE); + if (result != SL_RESULT_SUCCESS) { + *error = "Failed to realize OpenSL engine"; + } + + result = (*engine)->GetInterface(engine, SL_IID_ENGINE, &engineInterface); + if (result != SL_RESULT_SUCCESS) { + *error = "Failed to realize OpenSL engine"; + } + + const SLInterfaceID ids[1] = {SL_IID_VOLUME}; + const SLboolean req[1] = {SL_BOOLEAN_FALSE}; + result = (*engineInterface)->CreateOutputMix(engineInterface, &outputMix, 1, ids, req); + if (result != SL_RESULT_SUCCESS) { + *error = "Failed to create output mix"; + } + + result = (*outputMix)->Realize(outputMix, SL_BOOLEAN_FALSE); + if (result != SL_RESULT_SUCCESS) { + *error = "Failed to realize output mix"; + } +} + +void slplay_destroy() { + for (uri_player *player = players; player->uri != NULL; player++) { + if (player->player) { + (*(player->player))->Destroy(player->player); + } + } + + (*outputMix)->Destroy(outputMix); + (*engine)->Destroy(engine); +} + +void slplay_stop(uri_player* player, char **error) { + SLPlayItf playInterface = player->playInterface; + SLresult result; + + // stop a loop + loop_start = 0; + + result = (*playInterface)->SetPlayState(playInterface, SL_PLAYSTATE_PAUSED); + if (result != SL_RESULT_SUCCESS) { + *error = "Failed to set SL_PLAYSTATE_STOPPED"; + return; + } +} + +void slplay_stop_uri(const char* uri, char **error) { + uri_player* player = get_player_by_uri(uri); + slplay_stop(player, error); +} + +void SLAPIENTRY slplay_callback(SLPlayItf playItf, void *context, SLuint32 event) { + uint64_t cb_loop_start = *((uint64_t*)context); + if (event == SL_PLAYEVENT_HEADATEND && cb_loop_start == loop_start) { + (*playItf)->SetPlayState(playItf, SL_PLAYSTATE_STOPPED); + (*playItf)->SetMarkerPosition(playItf, 0); + (*playItf)->SetPlayState(playItf, SL_PLAYSTATE_PLAYING); + } +} + +void slplay_play (const char *uri, bool loop, char **error) { + SLresult result; + + uri_player* player = get_player_by_uri(uri); + if (player == NULL) { + player = slplay_create_player_for_uri(uri, error); + if (*error) { + return; + } + } + + SLPlayItf playInterface = player->playInterface; + if (loop) { + loop_start = nanos_since_boot(); + loop_start_ctx = loop_start; + result = (*playInterface)->RegisterCallback(playInterface, slplay_callback, &loop_start_ctx); + if (result != SL_RESULT_SUCCESS) { + char error[64]; + snprintf(error, sizeof(error), "Failed to register callback. %d", result); + *error = error[0]; + return; + } + + result = (*playInterface)->SetCallbackEventsMask(playInterface, SL_PLAYEVENT_HEADATEND); + if (result != SL_RESULT_SUCCESS) { + *error = "Failed to set callback event mask"; + return; + } + } + + // Reset the audio player + result = (*playInterface)->ClearMarkerPosition(playInterface); + if (result != SL_RESULT_SUCCESS) { + *error = "Failed to clear marker position"; + return; + } + result = (*playInterface)->SetPlayState(playInterface, SL_PLAYSTATE_PAUSED); + result = (*playInterface)->SetPlayState(playInterface, SL_PLAYSTATE_STOPPED); + result = (*playInterface)->SetPlayState(playInterface, SL_PLAYSTATE_PLAYING); + if (result != SL_RESULT_SUCCESS) { + *error = "Failed to set SL_PLAYSTATE_PLAYING"; + } +} diff --git a/selfdrive/ui/slplay.h b/selfdrive/ui/slplay.h new file mode 100644 index 0000000000..f8c39ceeb7 --- /dev/null +++ b/selfdrive/ui/slplay.h @@ -0,0 +1,21 @@ +#ifndef SLPLAY_H +#define SLPLAY_H + +#include +#include +#include + +typedef struct { + const char* uri; + SLObjectItf player; + SLPlayItf playInterface; +} uri_player; + +void slplay_setup(char **error); +uri_player* slplay_create_player_for_uri(const char* uri, char **error); +void slplay_play (const char *uri, bool loop, char **error); +void slplay_stop_uri (const char* uri, char **error); +void slplay_destroy(); + +#endif + diff --git a/selfdrive/ui/sound.cc b/selfdrive/ui/sound.cc new file mode 100644 index 0000000000..701fa56b4c --- /dev/null +++ b/selfdrive/ui/sound.cc @@ -0,0 +1,85 @@ +#include +#include "sound.hpp" + +#include "common/swaglog.h" + +typedef struct { + AudibleAlert alert; + const char* uri; + bool loop; +} sound_file; + +extern "C"{ +#include "slplay.h" +} + +void set_volume(int volume) { + char volume_change_cmd[64]; + sprintf(volume_change_cmd, "service call audio 3 i32 3 i32 %d i32 1 &", volume); + + // 5 second timeout at 60fps + int volume_changed = system(volume_change_cmd); +} + + +sound_file sound_table[] = { + { cereal_CarControl_HUDControl_AudibleAlert_chimeDisengage, "../assets/sounds/disengaged.wav", false }, + { cereal_CarControl_HUDControl_AudibleAlert_chimeEngage, "../assets/sounds/engaged.wav", false }, + { cereal_CarControl_HUDControl_AudibleAlert_chimeWarning1, "../assets/sounds/warning_1.wav", false }, + { cereal_CarControl_HUDControl_AudibleAlert_chimeWarning2, "../assets/sounds/warning_2.wav", false }, + { cereal_CarControl_HUDControl_AudibleAlert_chimeWarningRepeat, "../assets/sounds/warning_repeat.wav", true }, + { cereal_CarControl_HUDControl_AudibleAlert_chimeError, "../assets/sounds/error.wav", false }, + { cereal_CarControl_HUDControl_AudibleAlert_chimePrompt, "../assets/sounds/error.wav", false }, + { cereal_CarControl_HUDControl_AudibleAlert_none, NULL, false }, +}; + +sound_file* get_sound_file(AudibleAlert alert) { + for (sound_file *s = sound_table; s->alert != cereal_CarControl_HUDControl_AudibleAlert_none; s++) { + if (s->alert == alert) { + return s; + } + } + + return NULL; +} + +void play_alert_sound(AudibleAlert alert) { + sound_file* sound = get_sound_file(alert); + char* error = NULL; + + slplay_play(sound->uri, sound->loop, &error); + if(error) { + LOGW("error playing sound: %s", error); + } +} + +void stop_alert_sound(AudibleAlert alert) { + sound_file* sound = get_sound_file(alert); + char* error = NULL; + + slplay_stop_uri(sound->uri, &error); + if(error) { + LOGW("error stopping sound: %s", error); + } +} + +void ui_sound_init() { + char *error = NULL; + slplay_setup(&error); + if (error) goto fail; + + for (sound_file *s = sound_table; s->alert != cereal_CarControl_HUDControl_AudibleAlert_none; s++) { + slplay_create_player_for_uri(s->uri, &error); + if (error) goto fail; + } + return; + +fail: + LOGW(error); + exit(1); +} + +void ui_sound_destroy() { + slplay_destroy(); +} + diff --git a/selfdrive/ui/sound.hpp b/selfdrive/ui/sound.hpp new file mode 100644 index 0000000000..cc44c1b4b3 --- /dev/null +++ b/selfdrive/ui/sound.hpp @@ -0,0 +1,17 @@ +#ifndef __SOUND_HPP +#define __SOUND_HPP + +#include "cereal/gen/c/log.capnp.h" + +typedef enum cereal_CarControl_HUDControl_AudibleAlert AudibleAlert; + +void ui_sound_init(); +void ui_sound_destroy(); + +void set_volume(int volume); + +void play_alert_sound(AudibleAlert alert); +void stop_alert_sound(AudibleAlert alert); + +#endif + diff --git a/selfdrive/ui/spinner/Makefile b/selfdrive/ui/spinner/Makefile new file mode 100644 index 0000000000..93871bb009 --- /dev/null +++ b/selfdrive/ui/spinner/Makefile @@ -0,0 +1,74 @@ +CC = clang +CXX = clang++ + +PHONELIBS = ../../../phonelibs + +WARN_FLAGS = -Werror=implicit-function-declaration \ + -Werror=incompatible-pointer-types \ + -Werror=int-conversion \ + -Werror=return-type \ + -Werror=format-extra-args + +CFLAGS = -std=gnu11 -fPIC -O2 $(WARN_FLAGS) +CXXFLAGS = -std=c++11 -fPIC -O2 $(WARN_FLAGS) + +NANOVG_FLAGS = -I$(PHONELIBS)/nanovg + +OPENGL_LIBS = -lGLESv3 + +FRAMEBUFFER_LIBS = -lutils -lgui -lEGL + +OBJS = spinner.o \ + ../../common/framebuffer.o \ + $(PHONELIBS)/nanovg/nanovg.o \ + ../../common/spinner.o \ + opensans_semibold.o \ + img_spinner_track.o \ + img_spinner_comma.o + +DEPS := $(OBJS:.o=.d) + +.PHONY: all +all: spinner + +spinner: $(OBJS) + @echo "[ LINK ] $@" + $(CXX) -fPIC -o '$@' $^ \ + -s \ + $(FRAMEBUFFER_LIBS) \ + -L/system/vendor/lib64 \ + $(OPENGL_LIBS) \ + -lm -llog + +../../common/framebuffer.o: ../../common/framebuffer.cc + @echo "[ CXX ] $@" + $(CXX) $(CXXFLAGS) -MMD \ + -I$(PHONELIBS)/android_frameworks_native/include \ + -I$(PHONELIBS)/android_system_core/include \ + -I$(PHONELIBS)/android_hardware_libhardware/include \ + -c -o '$@' '$<' + +opensans_semibold.o: ../../assets/fonts/opensans_semibold.ttf + @echo "[ bin2o ] $@" + cd '$(dir $<)' && ld -r -b binary '$(notdir $<)' -o '$(abspath $@)' + +img_spinner_track.o: ../../assets/img_spinner_track.png + @echo "[ bin2o ] $@" + cd '$(dir $<)' && ld -r -b binary '$(notdir $<)' -o '$(abspath $@)' + +img_spinner_comma.o: ../../assets/img_spinner_comma.png + @echo "[ bin2o ] $@" + cd '$(dir $<)' && ld -r -b binary '$(notdir $<)' -o '$(abspath $@)' + +%.o: %.c + @echo "[ CC ] $@" + $(CC) $(CFLAGS) -MMD \ + -I../.. \ + $(NANOVG_FLAGS) \ + -c -o '$@' '$<' + +.PHONY: clean +clean: + rm -f spinner $(OBJS) $(DEPS) + +-include $(DEPS) diff --git a/selfdrive/ui/spinner/spinner b/selfdrive/ui/spinner/spinner new file mode 100755 index 0000000000000000000000000000000000000000..c8f8e68ecf4ae37be04f60dbc6551c73366cbe2d GIT binary patch literal 534752 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�e#^uGF!XT6Ch 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 x(Eall=uUV+>6c%LSPoa +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "common/framebuffer.h" +#include "common/spinner.h" + +int main(int argc, char** argv) { + int err; + + spin(argc, argv); + + return 0; +} diff --git a/selfdrive/ui/test/.gitignore b/selfdrive/ui/test/.gitignore new file mode 100644 index 0000000000..b80a5b49ce --- /dev/null +++ b/selfdrive/ui/test/.gitignore @@ -0,0 +1,2 @@ +test +play_sound diff --git a/selfdrive/ui/test/Makefile b/selfdrive/ui/test/Makefile new file mode 100644 index 0000000000..e0442db518 --- /dev/null +++ b/selfdrive/ui/test/Makefile @@ -0,0 +1,69 @@ +CC = clang +CXX = clang++ + +PHONELIBS = ../../../phonelibs + +WARN_FLAGS = -Werror=implicit-function-declaration \ + -Werror=incompatible-pointer-types \ + -Werror=int-conversion \ + -Werror=return-type \ + -Werror=format-extra-args + +CFLAGS = -std=gnu11 -g -fPIC -O2 $(WARN_FLAGS) +CXXFLAGS = -std=c++11 -g -fPIC -O2 $(WARN_FLAGS) + +ZMQ_FLAGS = -I$(PHONELIBS)/zmq/aarch64/include +ZMQ_LIBS = -L$(PHONELIBS)/zmq/aarch64/lib \ + -l:libczmq.a -l:libzmq.a \ + -lgnustl_shared + +NANOVG_FLAGS = -I$(PHONELIBS)/nanovg +JSON_FLAGS = -I$(PHONELIBS)/json/src + +OPENGL_LIBS = -lGLESv3 + +FRAMEBUFFER_LIBS = -lutils -lgui -lEGL + +OBJS = test.o \ + ../../common/framebuffer.o \ + ../../common/touch.o + +DEPS := $(OBJS:.o=.d) + +all: test + +test: $(OBJS) + @echo "[ LINK ] $@" + $(CXX) -fPIC -o '$@' $^ \ + $(FRAMEBUFFER_LIBS) \ + $(CEREAL_LIBS) \ + $(ZMQ_LIBS) \ + -L/system/vendor/lib64 \ + -lhardware \ + $(OPENGL_LIBS) \ + -lcutils -lm -llog + +%.o: %.cc + @echo "[ CXX ] $@" + $(CXX) $(CXXFLAGS) -MMD \ + -Iinclude -I.. -I../.. \ + -I$(PHONELIBS)/android_frameworks_native/include \ + -I$(PHONELIBS)/android_system_core/include \ + -I$(PHONELIBS)/android_hardware_libhardware/include \ + -c -o '$@' '$<' + +%.o: %.c + @echo "[ CC ] $@" + $(CC) $(CFLAGS) -MMD \ + -I.. -I../.. \ + $(NANOVG_FLAGS) \ + $(ZMQ_FLAGS) \ + $(CEREAL_CFLAGS) \ + $(JSON_FLAGS) \ + -c -o '$@' '$<' + +.PHONY: clean +clean: + rm -f ui $(OBJS) $(DEPS) + +-include $(DEPS) diff --git a/selfdrive/ui/test/build_play_sound.sh b/selfdrive/ui/test/build_play_sound.sh new file mode 100755 index 0000000000..802bdee8fc --- /dev/null +++ b/selfdrive/ui/test/build_play_sound.sh @@ -0,0 +1,3 @@ +#!/bin/sh +clang -fPIC -o play_sound play_sound.c ../slplay.c -I ../../ -I ../ -lOpenSLES -Wl,-rpath=/system/lib64 + diff --git a/selfdrive/ui/test/play_sound.c b/selfdrive/ui/test/play_sound.c new file mode 100644 index 0000000000..030a9f25a5 --- /dev/null +++ b/selfdrive/ui/test/play_sound.c @@ -0,0 +1,37 @@ +#include +#include "slplay.h" + +void play_sound(char *uri, int volume) { + char **error = NULL; + printf("call slplay_setup\n"); + slplay_setup(error); + if (error) { printf("%s\n", *error); return; } + + printf("call slplay_create_player_for_uri\n"); + slplay_create_player_for_uri(uri, error); + if (error) { printf("%s\n", *error); return; } + + printf("call slplay_play\n"); + + while (1) { + char volume_change_cmd[64]; + sprintf(volume_change_cmd, "service call audio 3 i32 3 i32 %d i32 1", volume); + system(volume_change_cmd); + + slplay_play(uri, false, error); + if (error) { printf("%s\n", *error); return; } + + sleep(1); + } +} + +int main(int argc, char *argv[]) { + int volume = 10; + if (argc > 2) { + volume = atoi(argv[2]); + } + printf("setting volume to %d\n", volume); + + play_sound(argv[1], volume); + return 0; +} diff --git a/selfdrive/ui/test/test.c b/selfdrive/ui/test/test.c new file mode 100644 index 0000000000..4b6df0cac7 --- /dev/null +++ b/selfdrive/ui/test/test.c @@ -0,0 +1,48 @@ +#include +#include +#include + +#include +#include +#include + +#include "common/framebuffer.h" +#include "common/touch.h" + +typedef struct UIState { + FramebufferState *fb; + int fb_w, fb_h; + EGLDisplay display; + EGLSurface surface; +} UIState; + +TouchState touch = {0}; + +void wait_for_touch() { + int touch_x = -1, touch_y = -1; + while (1) { + int touched = touch_poll(&touch, &touch_x, &touch_y, 0); + if (touched == 1) { break; } + } +} + +int main() { + UIState uistate; + UIState *s = &uistate; + + memset(s, 0, sizeof(UIState)); + s->fb = framebuffer_init("ui", 0x00010000, true, + &s->display, &s->surface, &s->fb_w, &s->fb_h); + + touch_init(&touch); + + printf("waiting for touch with screen on\n"); + framebuffer_set_power(s->fb, HWC_POWER_MODE_NORMAL); + wait_for_touch(); + + printf("waiting for touch with screen off\n"); + framebuffer_set_power(s->fb, HWC_POWER_MODE_OFF); + wait_for_touch(); + printf("done\n"); +} + diff --git a/selfdrive/ui/ui.cc b/selfdrive/ui/ui.cc new file mode 100644 index 0000000000..6a36f49198 --- /dev/null +++ b/selfdrive/ui/ui.cc @@ -0,0 +1,972 @@ +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "common/util.h" +#include "common/messaging.h" +#include "common/timing.h" +#include "common/swaglog.h" +#include "common/touch.h" +#include "common/visionimg.h" +#include "common/params.h" + +#include "ui.hpp" +#include "sound.hpp" + +static int last_brightness = -1; +static void set_brightness(UIState *s, int brightness) { + if (last_brightness != brightness && (s->awake || brightness == 0)) { + FILE *f = fopen("/sys/class/leds/lcd-backlight/brightness", "wb"); + if (f != NULL) { + fprintf(f, "%d", brightness); + fclose(f); + last_brightness = brightness; + } + } +} + +static void set_awake(UIState *s, bool awake) { +#ifdef QCOM + if (awake) { + // 30 second timeout at 30 fps + s->awake_timeout = 30*30; + } + if (s->awake != awake) { + s->awake = awake; + + // TODO: replace command_awake and command_sleep with direct calls to android + if (awake) { + LOGW("awake normal"); + system("service call window 18 i32 1"); // enable event processing + framebuffer_set_power(s->fb, HWC_POWER_MODE_NORMAL); + } else { + LOGW("awake off"); + set_brightness(s, 0); + system("service call window 18 i32 0"); // disable event processing + framebuffer_set_power(s->fb, HWC_POWER_MODE_OFF); + } + } +#else + // computer UI doesn't sleep + s->awake = true; +#endif +} + +volatile sig_atomic_t do_exit = 0; +static void set_do_exit(int sig) { + do_exit = 1; +} + +static void read_param_bool(bool* param, const char* param_name) { + char *s; + const int result = read_db_value(NULL, param_name, &s, NULL); + if (result == 0) { + *param = s[0] == '1'; + free(s); + } +} + +static void read_param_float(float* param, const char* param_name) { + char *s; + const int result = read_db_value(NULL, param_name, &s, NULL); + if (result == 0) { + *param = strtod(s, NULL); + free(s); + } +} + +static void read_param_bool_timeout(bool* param, const char* param_name, int* timeout) { + if (*timeout > 0){ + (*timeout)--; + } else { + read_param_bool(param, param_name); + *timeout = 2 * UI_FREQ; // 0.5Hz + } +} + +static void read_param_float_timeout(float* param, const char* param_name, int* timeout) { + if (*timeout > 0){ + (*timeout)--; + } else { + read_param_float(param, param_name); + *timeout = 2 * UI_FREQ; // 0.5Hz + } +} + +static void ui_init(UIState *s) { + memset(s, 0, sizeof(UIState)); + + pthread_mutex_init(&s->lock, NULL); + pthread_cond_init(&s->bg_cond, NULL); + + s->ctx = Context::create(); + s->model_sock = SubSocket::create(s->ctx, "model"); + s->controlsstate_sock = SubSocket::create(s->ctx, "controlsState"); + s->uilayout_sock = SubSocket::create(s->ctx, "uiLayoutState"); + s->livecalibration_sock = SubSocket::create(s->ctx, "liveCalibration"); + s->radarstate_sock = SubSocket::create(s->ctx, "radarState"); + + assert(s->model_sock != NULL); + assert(s->controlsstate_sock != NULL); + assert(s->uilayout_sock != NULL); + assert(s->livecalibration_sock != NULL); + assert(s->radarstate_sock != NULL); + + s->poller = Poller::create({ + s->model_sock, + s->controlsstate_sock, + s->uilayout_sock, + s->livecalibration_sock, + s->radarstate_sock + }); + +#ifdef SHOW_SPEEDLIMIT + s->map_data_sock = SubSock::create(s->ctx, "liveMapData"); + assert(s->map_data_sock != NULL); + s->poller.registerSocket(s->map_data_sock); +#endif + + s->ipc_fd = -1; + + // init display + s->fb = framebuffer_init("ui", 0x00010000, true, &s->fb_w, &s->fb_h); + assert(s->fb); + + set_awake(s, true); + + s->model_changed = false; + s->livempc_or_radarstate_changed = false; + + ui_nvg_init(s); +} + +static void ui_init_vision(UIState *s, const VisionStreamBufs back_bufs, + int num_back_fds, const int *back_fds, + const VisionStreamBufs front_bufs, int num_front_fds, + const int *front_fds) { + const VisionUIInfo ui_info = back_bufs.buf_info.ui_info; + + assert(num_back_fds == UI_BUF_COUNT); + assert(num_front_fds == UI_BUF_COUNT); + + vipc_bufs_load(s->bufs, &back_bufs, num_back_fds, back_fds); + vipc_bufs_load(s->front_bufs, &front_bufs, num_front_fds, front_fds); + + s->cur_vision_idx = -1; + s->cur_vision_front_idx = -1; + + s->scene = (UIScene){ + .frontview = getenv("FRONTVIEW") != NULL, + .fullview = getenv("FULLVIEW") != NULL, + .transformed_width = ui_info.transformed_width, + .transformed_height = ui_info.transformed_height, + .front_box_x = ui_info.front_box_x, + .front_box_y = ui_info.front_box_y, + .front_box_width = ui_info.front_box_width, + .front_box_height = ui_info.front_box_height, + .world_objects_visible = false, // Invisible until we receive a calibration message. + .gps_planner_active = false, + }; + + s->rgb_width = back_bufs.width; + s->rgb_height = back_bufs.height; + s->rgb_stride = back_bufs.stride; + s->rgb_buf_len = back_bufs.buf_len; + + s->rgb_front_width = front_bufs.width; + s->rgb_front_height = front_bufs.height; + s->rgb_front_stride = front_bufs.stride; + s->rgb_front_buf_len = front_bufs.buf_len; + + s->rgb_transform = (mat4){{ + 2.0f/s->rgb_width, 0.0f, 0.0f, -1.0f, + 0.0f, 2.0f/s->rgb_height, 0.0f, -1.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f, + }}; + + read_param_float(&s->speed_lim_off, "SpeedLimitOffset"); + read_param_bool(&s->is_metric, "IsMetric"); + read_param_bool(&s->longitudinal_control, "LongitudinalControl"); + read_param_bool(&s->limit_set_speed, "LimitSetSpeed"); + + // Set offsets so params don't get read at the same time + s->longitudinal_control_timeout = UI_FREQ / 3; + s->is_metric_timeout = UI_FREQ / 2; + s->limit_set_speed_timeout = UI_FREQ; +} + +static PathData read_path(cereal_ModelData_PathData_ptr pathp) { + PathData ret = {0}; + + struct cereal_ModelData_PathData pathd; + cereal_read_ModelData_PathData(&pathd, pathp); + + ret.prob = pathd.prob; + ret.std = pathd.std; + + capn_list32 polyp = pathd.poly; + capn_resolve(&polyp.p); + for (int i = 0; i < POLYFIT_DEGREE; i++) { + ret.poly[i] = capn_to_f32(capn_get32(polyp, i)); + } + + // Compute points locations + for (int i = 0; i < MODEL_PATH_DISTANCE; i++) { + ret.points[i] = ret.poly[0] * (i*i*i) + ret.poly[1] * (i*i)+ ret.poly[2] * i + ret.poly[3]; + } + + return ret; +} + +static ModelData read_model(cereal_ModelData_ptr modelp) { + struct cereal_ModelData modeld; + cereal_read_ModelData(&modeld, modelp); + + ModelData d = {0}; + + d.path = read_path(modeld.path); + d.left_lane = read_path(modeld.leftLane); + d.right_lane = read_path(modeld.rightLane); + + struct cereal_ModelData_LeadData leadd; + cereal_read_ModelData_LeadData(&leadd, modeld.lead); + d.lead = (LeadData){ + .dist = leadd.dist, .prob = leadd.prob, .std = leadd.std, + }; + + return d; +} + +static void update_status(UIState *s, int status) { + if (s->status != status) { + s->status = status; + // wake up bg thread to change + pthread_cond_signal(&s->bg_cond); + } +} + + +void handle_message(UIState *s, Message * msg) { + struct capn ctx; + capn_init_mem(&ctx, (uint8_t*)msg->getData(), msg->getSize(), 0); + + cereal_Event_ptr eventp; + eventp.p = capn_getp(capn_root(&ctx), 0, 1); + struct cereal_Event eventd; + cereal_read_Event(&eventd, eventp); + + if (eventd.which == cereal_Event_controlsState) { + struct cereal_ControlsState datad; + cereal_read_ControlsState(&datad, eventd.controlsState); + + s->controls_timeout = 1 * UI_FREQ; + s->controls_seen = true; + + if (datad.vCruise != s->scene.v_cruise) { + s->scene.v_cruise_update_ts = eventd.logMonoTime; + } + s->scene.v_cruise = datad.vCruise; + s->scene.v_ego = datad.vEgo; + s->scene.curvature = datad.curvature; + s->scene.engaged = datad.enabled; + s->scene.engageable = datad.engageable; + s->scene.gps_planner_active = datad.gpsPlannerActive; + s->scene.monitoring_active = datad.driverMonitoringOn; + + s->scene.frontview = datad.rearViewCam; + + s->scene.decel_for_model = datad.decelForModel; + + if (datad.alertSound != cereal_CarControl_HUDControl_AudibleAlert_none && datad.alertSound != s->alert_sound) { + if (s->alert_sound != cereal_CarControl_HUDControl_AudibleAlert_none) { + stop_alert_sound(s->alert_sound); + } + play_alert_sound(datad.alertSound); + + s->alert_sound = datad.alertSound; + snprintf(s->alert_type, sizeof(s->alert_type), "%s", datad.alertType.str); + } else if ((!datad.alertSound || datad.alertSound == cereal_CarControl_HUDControl_AudibleAlert_none) + && s->alert_sound != cereal_CarControl_HUDControl_AudibleAlert_none) { + stop_alert_sound(s->alert_sound); + s->alert_type[0] = '\0'; + s->alert_sound = cereal_CarControl_HUDControl_AudibleAlert_none; + } + + if (datad.alertText1.str) { + snprintf(s->scene.alert_text1, sizeof(s->scene.alert_text1), "%s", datad.alertText1.str); + } else { + s->scene.alert_text1[0] = '\0'; + } + if (datad.alertText2.str) { + snprintf(s->scene.alert_text2, sizeof(s->scene.alert_text2), "%s", datad.alertText2.str); + } else { + s->scene.alert_text2[0] = '\0'; + } + s->scene.awareness_status = datad.awarenessStatus; + + s->scene.alert_ts = eventd.logMonoTime; + + s->scene.alert_size = datad.alertSize; + if (datad.alertSize == cereal_ControlsState_AlertSize_none) { + s->alert_size = ALERTSIZE_NONE; + } else if (datad.alertSize == cereal_ControlsState_AlertSize_small) { + s->alert_size = ALERTSIZE_SMALL; + } else if (datad.alertSize == cereal_ControlsState_AlertSize_mid) { + s->alert_size = ALERTSIZE_MID; + } else if (datad.alertSize == cereal_ControlsState_AlertSize_full) { + s->alert_size = ALERTSIZE_FULL; + } + + if (s->status != STATUS_STOPPED) { + if (datad.alertStatus == cereal_ControlsState_AlertStatus_userPrompt) { + update_status(s, STATUS_WARNING); + } else if (datad.alertStatus == cereal_ControlsState_AlertStatus_critical) { + update_status(s, STATUS_ALERT); + } else if (datad.enabled) { + update_status(s, STATUS_ENGAGED); + } else { + update_status(s, STATUS_DISENGAGED); + } + } + + s->scene.alert_blinkingrate = datad.alertBlinkingRate; + if (datad.alertBlinkingRate > 0.) { + if (s->alert_blinked) { + if (s->alert_blinking_alpha > 0.0 && s->alert_blinking_alpha < 1.0) { + s->alert_blinking_alpha += (0.05*datad.alertBlinkingRate); + } else { + s->alert_blinked = false; + } + } else { + if (s->alert_blinking_alpha > 0.25) { + s->alert_blinking_alpha -= (0.05*datad.alertBlinkingRate); + } else { + s->alert_blinking_alpha += 0.25; + s->alert_blinked = true; + } + } + } + } else if (eventd.which == cereal_Event_radarState) { + struct cereal_RadarState datad; + cereal_read_RadarState(&datad, eventd.radarState); + struct cereal_RadarState_LeadData leaddatad; + cereal_read_RadarState_LeadData(&leaddatad, datad.leadOne); + s->scene.lead_status = leaddatad.status; + s->scene.lead_d_rel = leaddatad.dRel; + s->scene.lead_y_rel = leaddatad.yRel; + s->scene.lead_v_rel = leaddatad.vRel; + s->livempc_or_radarstate_changed = true; + } else if (eventd.which == cereal_Event_liveCalibration) { + s->scene.world_objects_visible = true; + struct cereal_LiveCalibrationData datad; + cereal_read_LiveCalibrationData(&datad, eventd.liveCalibration); + + capn_list32 extrinsicl = datad.extrinsicMatrix; + capn_resolve(&extrinsicl.p); // is this a bug? + for (int i = 0; i < 3 * 4; i++) { + s->scene.extrinsic_matrix.v[i] = + capn_to_f32(capn_get32(extrinsicl, i)); + } + } else if (eventd.which == cereal_Event_model) { + s->scene.model = read_model(eventd.model); + s->model_changed = true; + } else if (eventd.which == cereal_Event_liveMpc) { + struct cereal_LiveMpcData datad; + cereal_read_LiveMpcData(&datad, eventd.liveMpc); + + capn_list32 x_list = datad.x; + capn_resolve(&x_list.p); + + for (int i = 0; i < 50; i++){ + s->scene.mpc_x[i] = capn_to_f32(capn_get32(x_list, i)); + } + + capn_list32 y_list = datad.y; + capn_resolve(&y_list.p); + + for (int i = 0; i < 50; i++){ + s->scene.mpc_y[i] = capn_to_f32(capn_get32(y_list, i)); + } + s->livempc_or_radarstate_changed = true; + } else if (eventd.which == cereal_Event_uiLayoutState) { + struct cereal_UiLayoutState datad; + cereal_read_UiLayoutState(&datad, eventd.uiLayoutState); + s->active_app = datad.activeApp; + s->scene.uilayout_sidebarcollapsed = datad.sidebarCollapsed; + s->scene.uilayout_mapenabled = datad.mapEnabled; + + bool hasSidebar = !s->scene.uilayout_sidebarcollapsed; + bool mapEnabled = s->scene.uilayout_mapenabled; + if (mapEnabled) { + s->scene.ui_viz_rx = hasSidebar ? (box_x+nav_w) : (box_x+nav_w-(bdr_s*4)); + s->scene.ui_viz_rw = hasSidebar ? (box_w-nav_w) : (box_w-nav_w+(bdr_s*4)); + s->scene.ui_viz_ro = -(sbr_w + 4*bdr_s); + } else { + s->scene.ui_viz_rx = hasSidebar ? box_x : (box_x-sbr_w+bdr_s*2); + s->scene.ui_viz_rw = hasSidebar ? box_w : (box_w+sbr_w-(bdr_s*2)); + s->scene.ui_viz_ro = hasSidebar ? -(sbr_w - 6*bdr_s) : 0; + } + } else if (eventd.which == cereal_Event_liveMapData) { + struct cereal_LiveMapData datad; + cereal_read_LiveMapData(&datad, eventd.liveMapData); + s->scene.map_valid = datad.mapValid; + } + capn_free(&ctx); +} + +static void ui_update(UIState *s) { + int err; + + if (s->vision_connect_firstrun) { + // cant run this in connector thread because opengl. + // do this here for now in lieu of a run_on_main_thread event + + for (int i=0; ikhr[i] != NULL) { + visionimg_destroy_gl(s->khr[i], s->priv_hnds[i]); + glDeleteTextures(1, &s->frame_texs[i]); + } + + VisionImg img = { + .fd = s->bufs[i].fd, + .format = VISIONIMG_FORMAT_RGB24, + .width = s->rgb_width, + .height = s->rgb_height, + .stride = s->rgb_stride, + .bpp = 3, + .size = s->rgb_buf_len, + }; + #ifndef QCOM + s->priv_hnds[i] = s->bufs[i].addr; + #endif + s->frame_texs[i] = visionimg_to_gl(&img, &s->khr[i], &s->priv_hnds[i]); + + glBindTexture(GL_TEXTURE_2D, s->frame_texs[i]); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + // BGR + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, GL_GREEN); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED); + } + + for (int i=0; ikhr_front[i] != NULL) { + visionimg_destroy_gl(s->khr_front[i], s->priv_hnds_front[i]); + glDeleteTextures(1, &s->frame_front_texs[i]); + } + + VisionImg img = { + .fd = s->front_bufs[i].fd, + .format = VISIONIMG_FORMAT_RGB24, + .width = s->rgb_front_width, + .height = s->rgb_front_height, + .stride = s->rgb_front_stride, + .bpp = 3, + .size = s->rgb_front_buf_len, + }; + #ifndef QCOM + s->priv_hnds_front[i] = s->bufs[i].addr; + #endif + s->frame_front_texs[i] = visionimg_to_gl(&img, &s->khr_front[i], &s->priv_hnds_front[i]); + + glBindTexture(GL_TEXTURE_2D, s->frame_front_texs[i]); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + // BGR + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, GL_GREEN); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED); + } + + assert(glGetError() == GL_NO_ERROR); + + // Default UI Measurements (Assumes sidebar collapsed) + s->scene.ui_viz_rx = (box_x-sbr_w+bdr_s*2); + s->scene.ui_viz_rw = (box_w+sbr_w-(bdr_s*2)); + s->scene.ui_viz_ro = 0; + + s->vision_connect_firstrun = false; + + s->alert_blinking_alpha = 1.0; + s->alert_blinked = false; + } + + zmq_pollitem_t polls[1] = {{0}}; + // Take an rgb image from visiond if there is one + while(true) { + assert(s->ipc_fd >= 0); + polls[0].fd = s->ipc_fd; + polls[0].events = ZMQ_POLLIN; + #ifdef UI_60FPS + // uses more CPU in both UI and surfaceflinger + // 16% / 21% + int ret = zmq_poll(polls, 1, 1); + #else + // 9% / 13% = a 14% savings + int ret = zmq_poll(polls, 1, 1000); + #endif + if (ret < 0) { + if (errno == EINTR) continue; + + LOGW("poll failed (%d)", ret); + close(s->ipc_fd); + s->ipc_fd = -1; + s->vision_connected = false; + return; + } else if (ret == 0) { + break; + } + // vision ipc event + VisionPacket rp; + err = vipc_recv(s->ipc_fd, &rp); + if (err <= 0) { + LOGW("vision disconnected"); + close(s->ipc_fd); + s->ipc_fd = -1; + s->vision_connected = false; + return; + } + if (rp.type == VIPC_STREAM_ACQUIRE) { + bool front = rp.d.stream_acq.type == VISION_STREAM_RGB_FRONT; + int idx = rp.d.stream_acq.idx; + + int release_idx; + if (front) { + release_idx = s->cur_vision_front_idx; + } else { + release_idx = s->cur_vision_idx; + } + if (release_idx >= 0) { + VisionPacket rep = { + .type = VIPC_STREAM_RELEASE, + .d = { .stream_rel = { + .type = rp.d.stream_acq.type, + .idx = release_idx, + }}, + }; + vipc_send(s->ipc_fd, &rep); + } + + if (front) { + assert(idx < UI_BUF_COUNT); + s->cur_vision_front_idx = idx; + } else { + assert(idx < UI_BUF_COUNT); + s->cur_vision_idx = idx; + // printf("v %d\n", ((uint8_t*)s->bufs[idx].addr)[0]); + } + } else { + assert(false); + } + break; + } + // peek and consume all events in the zmq queue, then return. + while(true) { + auto polls = s->poller->poll(0); + + if (polls.size() == 0) + return; + + for (auto sock : polls){ + Message * msg = sock->receive(); + if (msg == NULL) continue; + + set_awake(s, true); + + handle_message(s, msg); + + delete msg; + } + } +} + +static int vision_subscribe(int fd, VisionPacket *rp, VisionStreamType type) { + int err; + LOGW("vision_subscribe type:%d", type); + + VisionPacket p1 = { + .type = VIPC_STREAM_SUBSCRIBE, + .d = { .stream_sub = { .type = type, .tbuffer = true, }, }, + }; + err = vipc_send(fd, &p1); + if (err < 0) { + close(fd); + return 0; + } + + do { + err = vipc_recv(fd, rp); + if (err <= 0) { + close(fd); + return 0; + } + + // release what we aren't ready for yet + if (rp->type == VIPC_STREAM_ACQUIRE) { + VisionPacket rep = { + .type = VIPC_STREAM_RELEASE, + .d = { .stream_rel = { + .type = rp->d.stream_acq.type, + .idx = rp->d.stream_acq.idx, + }}, + }; + vipc_send(fd, &rep); + } + } while (rp->type != VIPC_STREAM_BUFS || rp->d.stream_bufs.type != type); + + return 1; +} + +static void* vision_connect_thread(void *args) { + int err; + set_thread_name("vision_connect"); + + UIState *s = (UIState*)args; + while (!do_exit) { + usleep(100000); + pthread_mutex_lock(&s->lock); + bool connected = s->vision_connected; + pthread_mutex_unlock(&s->lock); + if (connected) continue; + + int fd = vipc_connect(); + if (fd < 0) continue; + + VisionPacket back_rp, front_rp; + if (!vision_subscribe(fd, &back_rp, VISION_STREAM_RGB_BACK)) continue; + if (!vision_subscribe(fd, &front_rp, VISION_STREAM_RGB_FRONT)) continue; + + pthread_mutex_lock(&s->lock); + assert(!s->vision_connected); + s->ipc_fd = fd; + + ui_init_vision(s, + back_rp.d.stream_bufs, back_rp.num_fds, back_rp.fds, + front_rp.d.stream_bufs, front_rp.num_fds, front_rp.fds); + + s->vision_connected = true; + s->vision_connect_firstrun = true; + + // Drain sockets + while (true){ + auto polls = s->poller->poll(0); + if (polls.size() == 0) + break; + + for (auto sock : polls){ + Message * msg = sock->receive(); + if (msg == NULL) continue; + delete msg; + } + } + + pthread_mutex_unlock(&s->lock); + } + return NULL; +} + +#ifdef QCOM + +#include +#include +#include + +static void* light_sensor_thread(void *args) { + int err; + set_thread_name("light_sensor"); + + UIState *s = (UIState*)args; + s->light_sensor = 0.0; + + struct sensors_poll_device_t* device; + struct sensors_module_t* module; + + hw_get_module(SENSORS_HARDWARE_MODULE_ID, (hw_module_t const**)&module); + sensors_open(&module->common, &device); + + // need to do this + struct sensor_t const* list; + int count = module->get_sensors_list(module, &list); + + int SENSOR_LIGHT = 7; + + err = device->activate(device, SENSOR_LIGHT, 0); + if (err != 0) goto fail; + err = device->activate(device, SENSOR_LIGHT, 1); + if (err != 0) goto fail; + + device->setDelay(device, SENSOR_LIGHT, ms2ns(100)); + + while (!do_exit) { + static const size_t numEvents = 1; + sensors_event_t buffer[numEvents]; + + int n = device->poll(device, buffer, numEvents); + if (n < 0) { + LOG_100("light_sensor_poll failed: %d", n); + } + if (n > 0) { + s->light_sensor = buffer[0].light; + } + } + + return NULL; + +fail: + LOGE("LIGHT SENSOR IS MISSING"); + s->light_sensor = 255; + return NULL; +} + + +static void* bg_thread(void* args) { + UIState *s = (UIState*)args; + set_thread_name("bg"); + + FramebufferState *bg_fb = framebuffer_init("bg", 0x00001000, false, NULL, NULL); + assert(bg_fb); + + int bg_status = -1; + while(!do_exit) { + pthread_mutex_lock(&s->lock); + if (bg_status == s->status) { + // will always be signaled if it changes? + pthread_cond_wait(&s->bg_cond, &s->lock); + } + bg_status = s->status; + pthread_mutex_unlock(&s->lock); + + assert(bg_status < ARRAYSIZE(bg_colors)); + const uint8_t *color = bg_colors[bg_status]; + + glClearColor(color[0]/256.0, color[1]/256.0, color[2]/256.0, 0.0); + glClear(GL_COLOR_BUFFER_BIT); + + framebuffer_swap(bg_fb); + } + + return NULL; +} + +#endif + +int is_leon() { + #define MAXCHAR 1000 + FILE *fp; + char str[MAXCHAR]; + const char* filename = "/proc/cmdline"; + + fp = fopen(filename, "r"); + if (fp == NULL){ + printf("Could not open file %s",filename); + return 0; + } + fgets(str, MAXCHAR, fp); + fclose(fp); + return strstr(str, "letv") != NULL; +} + + + +int main(int argc, char* argv[]) { + int err; + setpriority(PRIO_PROCESS, 0, -14); + + zsys_handler_set(NULL); + signal(SIGINT, (sighandler_t)set_do_exit); + + UIState uistate; + UIState *s = &uistate; + ui_init(s); + + pthread_t connect_thread_handle; + err = pthread_create(&connect_thread_handle, NULL, + vision_connect_thread, s); + assert(err == 0); + +#ifdef QCOM + pthread_t light_sensor_thread_handle; + err = pthread_create(&light_sensor_thread_handle, NULL, + light_sensor_thread, s); + assert(err == 0); + + pthread_t bg_thread_handle; + err = pthread_create(&bg_thread_handle, NULL, + bg_thread, s); + assert(err == 0); +#endif + + TouchState touch = {0}; + touch_init(&touch); + s->touch_fd = touch.fd; + + ui_sound_init(); + + // light sensor scaling params + const int LEON = is_leon(); + + const float BRIGHTNESS_B = LEON ? 10.0 : 5.0; + const float BRIGHTNESS_M = LEON ? 2.6 : 1.3; + + float smooth_brightness = BRIGHTNESS_B; + + const int MIN_VOLUME = LEON ? 12 : 9; + const int MAX_VOLUME = LEON ? 15 : 12; + + set_volume(MIN_VOLUME); + s->volume_timeout = 5 * UI_FREQ; + int draws = 0; + while (!do_exit) { + bool should_swap = false; + if (!s->vision_connected) { + // Delay a while to avoid 9% cpu usage while car is not started and user is keeping touching on the screen. + // Don't hold the lock while sleeping, so that vision_connect_thread have chances to get the lock. + usleep(30 * 1000); + } + pthread_mutex_lock(&s->lock); + double u1 = millis_since_boot(); + + // light sensor is only exposed on EONs + float clipped_brightness = (s->light_sensor*BRIGHTNESS_M) + BRIGHTNESS_B; + if (clipped_brightness > 512) clipped_brightness = 512; + smooth_brightness = clipped_brightness * 0.01 + smooth_brightness * 0.99; + if (smooth_brightness > 255) smooth_brightness = 255; + set_brightness(s, (int)smooth_brightness); + + if (!s->vision_connected) { + // Car is not started, keep in idle state and awake on touch events + zmq_pollitem_t polls[1] = {{0}}; + polls[0].fd = s->touch_fd; + polls[0].events = ZMQ_POLLIN; + int ret = zmq_poll(polls, 1, 0); + if (ret < 0){ + if (errno == EINTR) continue; + LOGW("poll failed (%d)", ret); + } else if (ret > 0) { + // awake on any touch + int touch_x = -1, touch_y = -1; + int touched = touch_read(&touch, &touch_x, &touch_y); + if (touched == 1) { + set_awake(s, true); + } + } + if (s->status != STATUS_STOPPED) { + update_status(s, STATUS_STOPPED); + } + } else { + if (s->status == STATUS_STOPPED) { + update_status(s, STATUS_DISENGAGED); + } + // Car started, fetch a new rgb image from ipc and peek for zmq events. + ui_update(s); + if(!s->vision_connected) { + // Visiond process is just stopped, force a redraw to make screen blank again. + ui_draw(s); + glFinish(); + should_swap = true; + } + } + + // manage wakefulness + if (s->awake_timeout > 0) { + s->awake_timeout--; + } else { + set_awake(s, false); + } + + // Don't waste resources on drawing in case screen is off or car is not started. + if (s->awake && s->vision_connected) { + ui_draw(s); + glFinish(); + should_swap = true; + } + + if (s->volume_timeout > 0) { + s->volume_timeout--; + } else { + int volume = fmin(MAX_VOLUME, MIN_VOLUME + s->scene.v_ego / 5); // up one notch every 5 m/s + set_volume(volume); + s->volume_timeout = 5 * UI_FREQ; + } + + if (s->controls_timeout > 0) { + s->controls_timeout--; + } else { + // stop playing alert sound + if ((!s->vision_connected || (s->vision_connected && s->alert_sound_timeout == 0)) && + s->alert_sound != cereal_CarControl_HUDControl_AudibleAlert_none) { + stop_alert_sound(s->alert_sound); + s->alert_sound = cereal_CarControl_HUDControl_AudibleAlert_none; + } + + // if visiond is still running and controlsState times out, display an alert + // TODO: refactor this to not be here + if (s->controls_seen && s->vision_connected && strcmp(s->scene.alert_text2, "Controls Unresponsive") != 0) { + s->scene.alert_size = ALERTSIZE_FULL; + if (s->status != STATUS_STOPPED) { + update_status(s, STATUS_ALERT); + } + snprintf(s->scene.alert_text1, sizeof(s->scene.alert_text1), "%s", "TAKE CONTROL IMMEDIATELY"); + snprintf(s->scene.alert_text2, sizeof(s->scene.alert_text2), "%s", "Controls Unresponsive"); + ui_draw_vision_alert(s, s->scene.alert_size, s->status, s->scene.alert_text1, s->scene.alert_text2); + + s->alert_sound_timeout = 2 * UI_FREQ; + + s->alert_sound = cereal_CarControl_HUDControl_AudibleAlert_chimeWarningRepeat; + play_alert_sound(s->alert_sound); + } + s->alert_sound_timeout--; + s->controls_seen = false; + } + + read_param_bool_timeout(&s->is_metric, "IsMetric", &s->is_metric_timeout); + read_param_bool_timeout(&s->longitudinal_control, "LongitudinalControl", &s->longitudinal_control_timeout); + read_param_bool_timeout(&s->limit_set_speed, "LimitSetSpeed", &s->limit_set_speed_timeout); + read_param_float_timeout(&s->speed_lim_off, "SpeedLimitOffset", &s->limit_set_speed_timeout); + + pthread_mutex_unlock(&s->lock); + + // the bg thread needs to be scheduled, so the main thread needs time without the lock + // safe to do this outside the lock? + if (should_swap) { + double u2 = millis_since_boot(); + if (u2-u1 > 66) { + // warn on sub 15fps + LOGW("slow frame(%d) time: %.2f", draws, u2-u1); + } + draws++; + framebuffer_swap(s->fb); + } + } + + set_awake(s, true); + ui_sound_destroy(); + + // wake up bg thread to exit + pthread_mutex_lock(&s->lock); + pthread_cond_signal(&s->bg_cond); + pthread_mutex_unlock(&s->lock); + +#ifdef QCOM + // join light_sensor_thread? + + err = pthread_join(bg_thread_handle, NULL); + assert(err == 0); +#endif + + err = pthread_join(connect_thread_handle, NULL); + assert(err == 0); + + return 0; +} diff --git a/selfdrive/ui/ui.hpp b/selfdrive/ui/ui.hpp new file mode 100644 index 0000000000..e520f6eae4 --- /dev/null +++ b/selfdrive/ui/ui.hpp @@ -0,0 +1,253 @@ +#ifndef _UI_H +#define _UI_H + +#include +#include + +#include "nanovg.h" + +#include "common/mat.h" +#include "common/visionipc.h" +#include "common/framebuffer.h" +#include "common/modeldata.h" +#include "messaging.hpp" + +#include "cereal/gen/c/log.capnp.h" + +#include "sound.hpp" + +#define STATUS_STOPPED 0 +#define STATUS_DISENGAGED 1 +#define STATUS_ENGAGED 2 +#define STATUS_WARNING 3 +#define STATUS_ALERT 4 + +#define ALERTSIZE_NONE 0 +#define ALERTSIZE_SMALL 1 +#define ALERTSIZE_MID 2 +#define ALERTSIZE_FULL 3 + +#ifndef QCOM + #define UI_60FPS +#endif + +#define UI_BUF_COUNT 4 +//#define SHOW_SPEEDLIMIT 1 +//#define DEBUG_TURN + +const int vwp_w = 1920; +const int vwp_h = 1080; +const int nav_w = 640; +const int nav_ww= 760; +const int sbr_w = 300; +const int bdr_s = 30; +const int box_x = sbr_w+bdr_s; +const int box_y = bdr_s; +const int box_w = vwp_w-sbr_w-(bdr_s*2); +const int box_h = vwp_h-(bdr_s*2); +const int viz_w = vwp_w-(bdr_s*2); +const int header_h = 420; +const int footer_h = 280; +const int footer_y = vwp_h-bdr_s-footer_h; + +const int UI_FREQ = 30; // Hz + +const int MODEL_PATH_MAX_VERTICES_CNT = 98; +const int MODEL_LANE_PATH_CNT = 3; +const int TRACK_POINTS_MAX_CNT = 50 * 2; + +const int SET_SPEED_NA = 255; + +const uint8_t bg_colors[][4] = { + [STATUS_STOPPED] = {0x07, 0x23, 0x39, 0xff}, + [STATUS_DISENGAGED] = {0x17, 0x33, 0x49, 0xff}, + [STATUS_ENGAGED] = {0x17, 0x86, 0x44, 0xff}, + [STATUS_WARNING] = {0xDA, 0x6F, 0x25, 0xff}, + [STATUS_ALERT] = {0xC9, 0x22, 0x31, 0xff}, +}; + + +typedef struct UIScene { + int frontview; + int fullview; + + int transformed_width, transformed_height; + + ModelData model; + + float mpc_x[50]; + float mpc_y[50]; + + bool world_objects_visible; + mat4 extrinsic_matrix; // Last row is 0 so we can use mat4. + + float v_cruise; + uint64_t v_cruise_update_ts; + float v_ego; + bool decel_for_model; + + float speedlimit; + bool speedlimit_valid; + bool map_valid; + + float curvature; + int engaged; + bool engageable; + bool monitoring_active; + + bool uilayout_sidebarcollapsed; + bool uilayout_mapenabled; + // responsive layout + int ui_viz_rx; + int ui_viz_rw; + int ui_viz_ro; + + int lead_status; + float lead_d_rel, lead_y_rel, lead_v_rel; + + int front_box_x, front_box_y, front_box_width, front_box_height; + + uint64_t alert_ts; + char alert_text1[1024]; + char alert_text2[1024]; + uint8_t alert_size; + float alert_blinkingrate; + + float awareness_status; + + // Used to show gps planner status + bool gps_planner_active; +} UIScene; + +typedef struct { + float x, y; +}vertex_data; + +typedef struct { + vertex_data v[MODEL_PATH_MAX_VERTICES_CNT]; + int cnt; +} model_path_vertices_data; + +typedef struct { + vertex_data v[TRACK_POINTS_MAX_CNT]; + int cnt; +} track_vertices_data; + + +typedef struct UIState { + pthread_mutex_t lock; + pthread_cond_t bg_cond; + + // framebuffer + FramebufferState *fb; + int fb_w, fb_h; + EGLDisplay display; + EGLSurface surface; + + // NVG + NVGcontext *vg; + + // fonts and images + int font_courbd; + int font_sans_regular; + int font_sans_semibold; + int font_sans_bold; + int img_wheel; + int img_turn; + int img_face; + int img_map; + + // sockets + Context *ctx; + SubSocket *model_sock; + SubSocket *controlsstate_sock; + SubSocket *livecalibration_sock; + SubSocket *radarstate_sock; + SubSocket *map_data_sock; + SubSocket *uilayout_sock; + Poller * poller; + + int active_app; + + // vision state + bool vision_connected; + bool vision_connect_firstrun; + int ipc_fd; + + VIPCBuf bufs[UI_BUF_COUNT]; + VIPCBuf front_bufs[UI_BUF_COUNT]; + int cur_vision_idx; + int cur_vision_front_idx; + + GLuint frame_program; + GLuint frame_texs[UI_BUF_COUNT]; + EGLImageKHR khr[UI_BUF_COUNT]; + void *priv_hnds[UI_BUF_COUNT]; + GLuint frame_front_texs[UI_BUF_COUNT]; + EGLImageKHR khr_front[UI_BUF_COUNT]; + void *priv_hnds_front[UI_BUF_COUNT]; + + GLint frame_pos_loc, frame_texcoord_loc; + GLint frame_texture_loc, frame_transform_loc; + + GLuint line_program; + GLint line_pos_loc, line_color_loc; + GLint line_transform_loc; + + int rgb_width, rgb_height, rgb_stride; + size_t rgb_buf_len; + mat4 rgb_transform; + + int rgb_front_width, rgb_front_height, rgb_front_stride; + size_t rgb_front_buf_len; + + UIScene scene; + bool awake; + + // timeouts + int awake_timeout; + int volume_timeout; + int controls_timeout; + int alert_sound_timeout; + int speed_lim_off_timeout; + int is_metric_timeout; + int longitudinal_control_timeout; + int limit_set_speed_timeout; + + bool controls_seen; + + int status; + bool is_metric; + bool longitudinal_control; + bool limit_set_speed; + float speed_lim_off; + bool is_ego_over_limit; + char alert_type[64]; + AudibleAlert alert_sound; + int alert_size; + float alert_blinking_alpha; + bool alert_blinked; + + float light_sensor; + + int touch_fd; + + // Hints for re-calculations and redrawing + bool model_changed; + bool livempc_or_radarstate_changed; + + GLuint frame_vao[2], frame_vbo[2], frame_ibo[2]; + mat4 rear_frame_mat, front_frame_mat; + + model_path_vertices_data model_path_vertices[MODEL_LANE_PATH_CNT * 2]; + + track_vertices_data track_vertices[2]; +} UIState; + +// API +void ui_draw_vision_alert(UIState *s, int va_size, int va_color, + const char* va_text1, const char* va_text2); +void ui_draw(UIState *s); +void ui_nvg_init(UIState *s); + +#endif