낑낑대며 대충 땜질
'개소리 왈왈 > 아마추어무선' 카테고리의 다른 글
안녕 rtl sdr (0) | 2023.03.20 |
---|---|
김포공항 근처 다녀옴 (0) | 2021.12.29 |
liveatc (0) | 2021.12.29 |
iss 주파수 (0) | 2021.12.19 |
아부지 HAM 장비 뽀려뽀려 (0) | 2021.12.18 |
낑낑대며 대충 땜질
안녕 rtl sdr (0) | 2023.03.20 |
---|---|
김포공항 근처 다녀옴 (0) | 2021.12.29 |
liveatc (0) | 2021.12.29 |
iss 주파수 (0) | 2021.12.19 |
아부지 HAM 장비 뽀려뽀려 (0) | 2021.12.18 |
만만한(?) vlc로 하는데 잘 들어온다.
그냥 기본값으로 해서 그런지 모르겠지만 딜레이가 심해서 게임은 힘들거 같다.
닌텐도 정품 독으로 해서 잘 되는건가?
맥은 장치명이 신기하게 붙네
머 USB Video라고 장치명이 박혀있으니 그냥 기대한대로 나온듯.
% lsusb -t Bus 000.Dev 001: USB 2.0 Bus, Bus 000.Dev 001: USB 2.0 Bus, Bus 000.Dev 001: USB 3.0 Bus, |__ Bus 020.Dev 005: USB Video, 480Mb/s |__ Bus 026.Dev 001: Hub, 480Mb/s |__ Bus 026.Dev 003: FaceTime HD Camera (Built-in), 480Mb/s |__ Bus 029.Dev 001: Hub, 480Mb/s |__ Bus 029.Dev 002: Hub, 480Mb/s |__ Bus 029.Dev 000: BRCM20702 Hub, |__ Bus 029.Dev 000: Bluetooth USB Host Controller, |__ Bus 029.Dev 004: Apple Internal Keyboard / Trackpad, 12Mb/s |__ Bus 029.Dev 005: Internal Memory Card Reader, 480Mb/s |
둠 리부트 스위치 진행중 (0) | 2022.08.23 |
---|---|
둠 스위치 중고 구매 (0) | 2022.08.21 |
스위치 게임 arms 구매 (0) | 2022.07.10 |
닌텐도 스위치 바이오쇼크 더 컬렉션 발견 (0) | 2022.02.20 |
ex m air 닌텐도 스위치 대응 펌웨어 업데이트 (0) | 2022.01.08 |
펄스 전류라고 하니 꾸준한 고전압은 막지 못하지만
순간적인 전류를 막아주는 녀석으로 설계 이상의 전류가 들어올 경우 GND 쪽으로 전류를 흘려
본 회로의 손상을 방지해주는 역할을 한다.
T서지 등의 과전압이 인가되는 경우에는 ON 상태가 되어, 펄스 전류를 TVS 측에서 소비시킴으로써 과전압을 클램프하여, 후단의 IC를 보호합니다.![]() |
[링크 : https://www.rohm.co.kr/electronics-basics/diodes/di_what8]
TVS 다이오드는 일반적으로 낙뢰, 유도 부하 스위칭 및 전송 또는 데이터 회선 및 전자 회로와 관련된 정전기 방전(ESD)이 유도하는 것과 같은 전기 과압으로부터 보호하기 위해 사용됩니다. |
[링크 : https://www.digikey.kr/ko/product-highlight/l/littelfuse/tvs-diodes]
[링크 : https://m.blog.naver.com/cubloc/220064263758]
[링크 : https://ttistoryy.tistory.com/18]
[링크 : https://ttistoryy.tistory.com/9]
베어링 진동 측정 관련 (0) | 2023.02.16 |
---|---|
이동평균 (0) | 2023.01.17 |
헤테로다인 (0) | 2022.08.08 |
ramp wave = sawtooth wave (0) | 2022.08.03 |
PID 제어... 2? (0) | 2022.06.20 |
<-
이런 연산자가 보여서 먼가 찾아보는 중
[링크 : https://etloveguitar.tistory.com/40]
golang http.HandleFunc(pattern) (0) | 2022.08.31 |
---|---|
golang mariadb 연동 (0) | 2022.08.30 |
golang unused import (0) | 2022.07.20 |
golang websocket package (0) | 2022.07.15 |
go run ./ (2) | 2022.04.18 |
weston_screenshooter_shoot()을 따라오는데 영 어딜 파야 나올지 감이 안온다.
아무튼.. libweston의 screenshooter.c가 실제적으로 수행되는 부분 같은데
//git\include\libweston\libweston.h int weston_screenshooter_shoot(struct weston_output *output, struct weston_buffer *buffer, weston_screenshooter_done_func_t done, void *data); //git\libweston\screenshooter.c WL_EXPORT int weston_screenshooter_shoot(struct weston_output *output, struct weston_buffer *buffer, weston_screenshooter_done_func_t done, void *data) { struct screenshooter_frame_listener *l; if (!wl_shm_buffer_get(buffer->resource)) { done(data, WESTON_SCREENSHOOTER_BAD_BUFFER); return -1; } buffer->shm_buffer = wl_shm_buffer_get(buffer->resource); buffer->width = wl_shm_buffer_get_width(buffer->shm_buffer); buffer->height = wl_shm_buffer_get_height(buffer->shm_buffer); if (buffer->width < output->current_mode->width || buffer->height < output->current_mode->height) { done(data, WESTON_SCREENSHOOTER_BAD_BUFFER); return -1; } l = malloc(sizeof *l); if (l == NULL) { done(data, WESTON_SCREENSHOOTER_NO_MEMORY); return -1; } l->buffer = buffer; l->output = output; l->done = done; l->data = data; l->listener.notify = screenshooter_frame_notify; wl_signal_add(&output->frame_signal, &l->listener); weston_output_disable_planes_incr(output); weston_output_damage(output); return 0; } |
아무튼 추적을 계속해보면 아래와 같이 event_loop에 wl_event_loop_add_idle() 실행해서 추가해주고 끝.
//git\libweston\compositor.c static void weston_schedule_surface_protection_update(struct weston_compositor *compositor) { struct content_protection *cp = compositor->content_protection; struct wl_event_loop *loop; if (!cp || cp->surface_protection_update) return; loop = wl_display_get_event_loop(compositor->wl_display); cp->surface_protection_update = wl_event_loop_add_idle(loop, notify_surface_protection_change, compositor); } WL_EXPORT void weston_output_disable_planes_incr(struct weston_output *output) { output->disable_planes++; /* * If disable_planes changes from 0 to non-zero, it means some type of * recording of content has started, and therefore protection level of * the protected surfaces must be updated to avoid the recording of * the protected content. */ if (output->disable_planes == 1) weston_schedule_surface_protection_update(output->compositor); } |
struct content_protection은 누가 만드나 하면서 따라가보니
weston_compositor_enable_content_protection() 함수에서 만들어 주고 해당 함수는
//git\libweston\content-protection.c WL_EXPORT int weston_compositor_enable_content_protection(struct weston_compositor *compositor) { struct content_protection *cp; cp = zalloc(sizeof(*cp)); if (cp == NULL) return -1; cp->compositor = compositor; compositor->content_protection = cp; wl_list_init(&cp->protected_list); if (wl_global_create(compositor->wl_display, &weston_content_protection_interface, 1, cp, bind_weston_content_protection) == NULL) return -1; cp->destroy_listener.notify = cp_destroy_listener; wl_signal_add(&compositor->destroy_signal, &cp->destroy_listener); cp->debug = weston_compositor_add_log_scope(compositor, "content-protection-debug", "debug-logs for content-protection", NULL, NULL, NULL); return 0; } |
drm_backend_create() 시에 b->atomic_modeset 조건에 의해서 생성된다.
//git\libweston\backend-drm\drm.c static struct drm_backend * drm_backend_create(struct weston_compositor *compositor, struct weston_drm_backend_config *config) { if (b->atomic_modeset) if (weston_compositor_enable_content_protection(compositor) < 0) weston_log("Error: initializing content-protection " "support failed.\n"); } |
이름이 비슷한건지 걸려나오는 다른 녀석.
//protocol\weston-screenshooter-client-protocol.h #define WESTON_SCREENSHOOTER_SHOOT 0 static inline void weston_screenshooter_shoot(struct weston_screenshooter *weston_screenshooter, struct wl_output *output, struct wl_buffer *buffer) { wl_proxy_marshal((struct wl_proxy *) weston_screenshooter, WESTON_SCREENSHOOTER_SHOOT, output, buffer); } |
wl_proxy_marshall()은 또 멀까해서 따라가 보지만.. 답이 안나온다 -_ㅠ
//wayland-main\src\wayland-client.c WL_EXPORT struct wl_proxy * wl_proxy_marshal_array_constructor_versioned(struct wl_proxy *proxy, uint32_t opcode, union wl_argument *args, const struct wl_interface *interface, uint32_t version) { return wl_proxy_marshal_array_flags(proxy, opcode, interface, version, 0, args); } WL_EXPORT struct wl_proxy * wl_proxy_marshal_array_constructor(struct wl_proxy *proxy, uint32_t opcode, union wl_argument *args, const struct wl_interface *interface) { return wl_proxy_marshal_array_constructor_versioned(proxy, opcode, args, interface, proxy->version); } WL_EXPORT void wl_proxy_marshal(struct wl_proxy *proxy, uint32_t opcode, ...) { union wl_argument args[WL_CLOSURE_MAX_ARGS]; va_list ap; va_start(ap, opcode); wl_argument_from_va_list(proxy->object.interface->methods[opcode].signature, args, WL_CLOSURE_MAX_ARGS, ap); va_end(ap); wl_proxy_marshal_array_constructor(proxy, opcode, args, NULL); } |
wayland hdmi - touch 연결 (0) | 2023.09.08 |
---|---|
wayland atomic commit 패치? (0) | 2022.08.22 |
wayland glreadpixels 실패 (0) | 2022.08.16 |
sway + wayvnc (0) | 2022.08.10 |
wayvnc 0.5 릴리즈 (0) | 2022.08.09 |
SPI 통신시
2MHz 클럭에 3200Hz / 1600Hz 사용 가능
I2C 통신시
400kHz(고속 i2c)일 경우 800 Hz
100kHz(표준 i2c) 200 Hz에
SPI The maximum SPI clock speed is 5 MHz with 100 pF maximum loading, and the timing scheme follows clock polarity (CPOL) = 1 and clock phase (CPHA) = 1. Use of the 3200 Hz and 1600 Hz output data rates is only recommended with SPI communication rates greater than or equal to 2 MHz. The 800 Hz output data rate is recommended only for communication speeds greater than or equal to 400 kHz, and the remaining data rates scale proportionally. For example, the minimum recommended communication speed for a 200 Hz output data rate is 100 kHz I2C Due to communication speed limitations, the maximum output data rate when using 400 kHz I2C is 800 Hz and scales linearly with a change in the I2C communication speed. For example, using I2C at 100 kHz would limit the maximum ODR to 200 Hz |
4 wire는 CS / SCLK / SDI / SDO를 쓴다면
3 wire는 CS / SCLK / SDIO 로 쓰는 듯.
(SDIO Serial Data Input Output의 약자 Secure Digital I/O의 약자이기도 하니.. 주의!)
[링크 : https://www.analog.com/media/en/technical-documentation/data-sheets/ADXL345.pdf]
rpi4 eeprom recovery (0) | 2022.10.14 |
---|---|
라즈베리 파이4 apm 설치시 php 작동 안될 경우 (0) | 2022.08.30 |
tea5767 모듈 땜질 (0) | 2022.08.17 |
rpi3b에서 wayvnc 빌드 + 실행하기 (0) | 2022.08.10 |
raspberrypi wayland compositor 설정 (0) | 2022.08.10 |
핀 피치가 2.54mm가 아닌 2.00mm 인데다가 구멍이 반이 없어서 어떻게 땜을 해야하나 고민하다 전문가에게 토스~
역시 전문가의 손은 다르구만
VCC 는 3.3V 라는데
[링크 : https://os.mbed.com/users/edodm85/notebook/radio-fm-tea5767/]
TEA5767 칩 자체는 3.0 Typical, 5.0 Max 라서 5V를 넣어도 되지 않나 싶긴 한데.. 그래도 Max 니까.. 참아야겠...지?
AMS1117-3.3을 투입할 시간이 되겠군...
MPXO는 MPX 가 있냐 없냐를 출력해주려나?
[링크 : https://www.sparkfun.com/datasheets/Wireless/General/TEA5767.pdf]
라즈베리 파이4 apm 설치시 php 작동 안될 경우 (0) | 2022.08.30 |
---|---|
adxl345 spi (0) | 2022.08.17 |
rpi3b에서 wayvnc 빌드 + 실행하기 (0) | 2022.08.10 |
raspberrypi wayland compositor 설정 (0) | 2022.08.10 |
linux iio adc + rpi (0) | 2022.06.20 |
독일 규격인가.. 어떻게 저런 약자가 나오는지 감이 안오는데?
Fachkreis Automobil (Automobile Expert Group) |
[링크 : https://www.rosenberger.com/product/fakra/]
[링크 : https://www.everythingrf.com/community/what-is-fakra-connector]
[링크 : https://www.amphenolrf.com/connectors/fakra-connectors.html]
USB3.0 커넥터 (0) | 2022.03.24 |
---|---|
m.2 와 mini PCI-e (0) | 2022.01.26 |
M.2 (0) | 2022.01.19 |
rotary joint / rotary unions (0) | 2017.07.12 |
micro usb 케이블 수리 (0) | 2017.02.21 |
C Specification void glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * data); Parameters x, y Specify the window coordinates of the first pixel that is read from the frame buffer. This location is the lower left corner of a rectangular block of pixels. width, height Specify the dimensions of the pixel rectangle. width and height of one correspond to a single pixel. |
[링크 : https://docs.gl/es3/glReadPixels]
static void screenshooter_shoot(struct wl_client *client, struct wl_resource *resource, struct wl_resource *output_resource, struct wl_resource *buffer_resource) { struct wlsc_output *output = output_resource->data; struct wl_buffer *buffer = buffer_resource->data; if (!wl_buffer_is_shm(buffer)) return; if (buffer->width < output->current->width || buffer->height < output->current->height) return; glPixelStorei(GL_PACK_ALIGNMENT, 1); glReadPixels(0, 0, output->current->width, output->current->height, GL_RGBA, GL_UNSIGNED_BYTE, wl_shm_buffer_get_data(buffer)); } |
You can't take screenshots with glReadPixels! |
[링크 : https://stackoverflow.com/questions/44634621/glreadpixels-with-screen-pixels]
대충 짰는데 안되는 듯..
$ cat gl_cap.c #include <stdio.h> #include <GLES2/gl2.h> #include <EGL/egl.h> #include <EGL/eglext.h> void main() { GLubyte color[1024*768*4]; glReadPixels(0,0, 1024, 768, GL_RGBA, GL_UNSIGNED_BYTE, &color); // printf("R:%d G:%d B:%d A:%d", color[0], color[1], color[2], color[3]); for(int y =0 ; y<768;y++) for(int x =0 ; x < 1024; x++) printf("%4d,%3d R:%d G:%d B:%d A:%d\n", x,y ,color[y*1024+x+0] ,color[y*1024+x+1] ,color[y*1024+x+2] ,color[y*1024+x+3] ); } |
링크는 아래와 같이 해주면 되긴 한데...
-lwayland-egl -lGLESv2 |
흐으으으음...
# head dump 0, 0 R:0 G:0 B:0 A:0 1, 0 R:0 G:0 B:0 A:0 2, 0 R:0 G:0 B:0 A:0 3, 0 R:0 G:0 B:0 A:0 4, 0 R:0 G:0 B:0 A:0 5, 0 R:0 G:0 B:0 A:0 6, 0 R:0 G:0 B:0 A:0 7, 0 R:0 G:0 B:0 A:0 8, 0 R:0 G:0 B:0 A:0 9, 0 R:0 G:0 B:0 A:0 # tail dump 1014,767 R:0 G:0 B:0 A:0 1015,767 R:0 G:0 B:0 A:0 1016,767 R:0 G:0 B:0 A:0 1017,767 R:0 G:0 B:0 A:0 1018,767 R:0 G:0 B:0 A:0 1019,767 R:0 G:0 B:0 A:0 1020,767 R:0 G:0 B:0 A:0 1021,767 R:0 G:0 B:0 A:0 1022,767 R:0 G:0 B:0 A:0 1023,767 R:0 G:0 B:0 A:0 |
wayland atomic commit 패치? (0) | 2022.08.22 |
---|---|
weston screen shooter 뜯어보기 (0) | 2022.08.17 |
sway + wayvnc (0) | 2022.08.10 |
wayvnc 0.5 릴리즈 (0) | 2022.08.09 |
capture drm screen (0) | 2022.08.08 |
에러별 디버그 메시지 출력 위치 추적중.
24/03/2021 11:06:09 rfbProcessClientNormalMessage: FixColourMapEntries unsupported 24/03/2021 11:06:09 Client 192.168.0.6 gone |
[링크 : https://github.com/LibVNC/libvncserver/blob/master/libvncserver/rfbserver.c#L2270]
24/03/2021 10:55:30 hybiReadAndDecode: read; Resource temporarily unavailable24/03/2021 10:55:30 hybiReadAndDecode: read; Resource temporarily unavailable24/03/2021 10:55:30 hybiReadAndDecode: read; Resource temporarily unavailable24/03/2021 10:55:30 hybiReadAndDecode: read; Resource temporarily unavailable24/03/2021 10:55:30 hybiReadHeader: got frame without mask; ret=6 24/03/2021 10:55:30 hybiReadAndDecode: unhandled opcode 13, b0: 9d, b1: 41 24/03/2021 10:55:30 rfbProcessClientNormalMessage: read: Protocol error 24/03/2021 10:55:30 Client 192.168.0.6 gone |
[링크 : https://github.com/LibVNC/libvncserver/blob/master/libvncserver/ws_decode.c#L374]
24/03/2021 11:09:19 Pixel format for client 192.168.0.6: 24/03/2021 11:09:19 87 bpp, depth 5, little endian 24/03/2021 11:09:19 true colour: max r 47360 g 20997 b 2, shift r 179 g 0 b 77 24/03/2021 11:09:19 rfbSetTranslateFunction: client bits per pixel not 8, 16 or 32 24/03/2021 11:09:19 Client 192.168.0.6 gone |
[링크 : https://github.com/LibVNC/libvncserver/blob/master/libvncserver/translate.c#L261]
+
2022.08.17
rfbRunEventLoop() 에 인자를 TRUE를 주고(background 실행하도록)
main loop 에서 rfbProcessEvents() 을 통해서 처리하게 하다 보니(websocket 처리를 위해)
양쪽에서 fd를 읽어 가려하다보니 데이터가 정상적으로 가져가지지 않아 죽는 것으로 판명됨.
libvncserver 종료 절차 (0) | 2022.11.01 |
---|---|
libvncserver 로그인 (0) | 2022.09.26 |
libvncserver websocket example (0) | 2022.08.12 |
libvncserver 마우스 이벤트 (0) | 2022.02.25 |
libvncserver 사용예 (0) | 2022.02.15 |