1.1 --- a/pkg/landfall-examples/keypad_ds_client/keypad_ds_client.cc Sun Jun 11 15:42:11 2023 +0200
1.2 +++ b/pkg/landfall-examples/keypad_ds_client/keypad_ds_client.cc Sun Jun 18 00:19:36 2023 +0200
1.3 @@ -19,23 +19,24 @@
1.4 * Boston, MA 02110-1301, USA
1.5 */
1.6
1.7 -#include <l4/devices/keypad-client.h>
1.8 -
1.9 -#include <l4/cxx/ipc_server>
1.10 -#include <l4/re/dataspace>
1.11 -#include <l4/re/env>
1.12 -#include <l4/re/rm>
1.13 -#include <l4/re/util/cap_alloc>
1.14 +#include <l4/re/c/dataspace.h>
1.15 +#include <l4/re/c/rm.h>
1.16 +#include <l4/re/env.h>
1.17
1.18 #include <l4/re/c/util/video/goos_fb.h>
1.19 #include <l4/re/c/video/view.h>
1.20
1.21 -#include <l4/util/util.h>
1.22 +#include <ipc/cap_alloc.h>
1.23 +
1.24 #include <stdio.h>
1.25 #include <unistd.h>
1.26 #include <stdint.h>
1.27 #include <stdlib.h>
1.28
1.29 +#include "keypad_client.h"
1.30 +
1.31 +
1.32 +
1.33 /* Video abstractions. */
1.34
1.35 static l4re_util_video_goos_fb_t gfb;
1.36 @@ -44,8 +45,7 @@
1.37
1.38 /* Keypad status and dimensions. */
1.39
1.40 -uint32_t *keypad = 0;
1.41 -void *keymem = 0;
1.42 +uint32_t *keymem = 0;
1.43 int columns, rows;
1.44
1.45
1.46 @@ -109,7 +109,7 @@
1.47 row++, mask >>= 1)
1.48
1.49 show_keystate(column * colsize, row * rowsize, colsize, rowsize,
1.50 - keypad[column] & mask ? 0xffffff : 0);
1.51 + keymem[column] & mask ? 0xffffff : 0);
1.52
1.53 /* Refresh the display. */
1.54
1.55 @@ -120,8 +120,8 @@
1.56
1.57 int main(int argc, char *argv[])
1.58 {
1.59 - L4::Cap<Keypad_device_interface> keypad_server;
1.60 - L4::Cap<L4Re::Dataspace> mem;
1.61 + l4_cap_idx_t keypad_cap;
1.62 + l4re_ds_t mem;
1.63
1.64 /* Obtain the keypad matrix dimensions. */
1.65
1.66 @@ -142,31 +142,37 @@
1.67
1.68 /* Obtain a reference to the keypad. */
1.69
1.70 - keypad_server = L4Re::Env::env()->get_cap<Keypad_device_interface>("keypad");
1.71 - if (!keypad_server.is_valid()) return 1;
1.72 + keypad_cap = l4re_env_get_cap("keypad");
1.73 +
1.74 + if (l4_is_invalid_cap(keypad_cap))
1.75 + return 1;
1.76
1.77 /* Obtain a capability for the keypad data. */
1.78
1.79 - mem = L4Re::Util::cap_alloc.alloc<L4Re::Dataspace>();
1.80 - if (!mem.is_valid()) return 1;
1.81 + mem = ipc_cap_alloc();
1.82 +
1.83 + if (l4_is_invalid_cap(mem))
1.84 + return 1;
1.85
1.86 /* Obtain a reference to the keypad data. */
1.87
1.88 - if (keypad_server->get_keypad_data(mem)) return 1;
1.89 + client_Keypad keypad(keypad_cap);
1.90 +
1.91 + if (keypad.get_keypad_data(&mem))
1.92 + return 1;
1.93
1.94 /* Attach the keypad data to a region in this task. */
1.95
1.96 - if (L4Re::Env::env()->rm()->attach(&keymem, mem->size(),
1.97 - L4Re::Rm::F::Search_addr |
1.98 - L4Re::Rm::F::R,
1.99 - L4::Ipc::make_cap_rw(mem)))
1.100 + if (l4re_rm_attach((void **) &keymem, l4re_ds_size(mem),
1.101 + L4RE_RM_F_SEARCH_ADDR | L4RE_RM_F_R,
1.102 + mem, 0,
1.103 + L4_PAGESHIFT))
1.104 return 1;
1.105
1.106 /* Show the keypad state. */
1.107
1.108 - keypad = (uint32_t *) keymem;
1.109 -
1.110 - while (1) show_keypad();
1.111 + while (1)
1.112 + show_keypad();
1.113
1.114 return 0;
1.115 }