* Furi: replace obsolete furiac_exit with osThreadExit, drop obsolete apis and test. Rename systemd to flipper and move to separate file, cleanup. ApiHal: Rename timebase to os and move freertos hooks there, move insomnia api to power module. * Furi: new thread helper * Furi: cleanup thread documentation * Flipper, AppLoader: update to use FuriThread. Update tasks signatures to match FuriThreadCallback signature. * F4: rename API_HAL_TIMEBASE_DEBUG to API_HAL_OS_DEBUG * Applications: rename FuriApplication to FlipperApplication, use FuriThreadCallback signature for apps. * C++ app template sample, new exit method
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include "u8g2/u8g2.h"
 | 
						|
#include "qrcode/qrcode.h"
 | 
						|
#include <furi.h>
 | 
						|
 | 
						|
/*
 | 
						|
TODO: rework with new app api
 | 
						|
 | 
						|
void u8g2_DrawPixelSize(u8g2_t* u8g2, uint8_t x, uint8_t y, uint8_t size) {
 | 
						|
    for(uint8_t px = 0; px < size; px++) {
 | 
						|
        for(uint8_t py = 0; py < size; py++) {
 | 
						|
            u8g2_DrawPixel(u8g2, x + px, y + py);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
int32_t u8g2_qrcode(void* p) {
 | 
						|
    // open record
 | 
						|
    FuriRecordSubscriber* fb_record =
 | 
						|
        furi_open_deprecated("u8g2_fb", false, false, NULL, NULL, NULL);
 | 
						|
 | 
						|
    // Allocate a chunk of memory to store the QR code
 | 
						|
    // https://github.com/ricmoo/QRCode
 | 
						|
    // we init version 1, 21x21 px, 16 alphanumeric chars with
 | 
						|
    // QUARTILE error correction
 | 
						|
    const uint8_t qr_version = 1;
 | 
						|
    const uint8_t qr_error_correction = ECC_QUARTILE;
 | 
						|
 | 
						|
    const uint8_t qr_x = 32;
 | 
						|
    const uint8_t qr_y = 0;
 | 
						|
    const uint8_t qr_size = 3;
 | 
						|
 | 
						|
    // The structure to manage the QR code
 | 
						|
    QRCode qrcode;
 | 
						|
 | 
						|
    // QR Code init
 | 
						|
    uint8_t qrcodeBytes[qrcode_getBufferSize(qr_version)];
 | 
						|
    qrcode_initText(&qrcode, qrcodeBytes, qr_version, qr_error_correction, "HELLO FLIPPER");
 | 
						|
 | 
						|
    if(fb_record == NULL) {
 | 
						|
        printf("[view_port] cannot create fb record\r\n");
 | 
						|
        return 255;
 | 
						|
    }
 | 
						|
 | 
						|
    u8g2_t* fb = furi_take(fb_record);
 | 
						|
 | 
						|
    // clear display
 | 
						|
    if(fb != NULL) {
 | 
						|
        u8g2_ClearBuffer(fb);
 | 
						|
    }
 | 
						|
 | 
						|
    while(1) {
 | 
						|
        if(fb != NULL) {
 | 
						|
            // draw qr code
 | 
						|
            for(uint8_t y = 0; y < qrcode.size; y++) {
 | 
						|
                for(uint8_t x = 0; x < qrcode.size; x++) {
 | 
						|
                    if(qrcode_getModule(&qrcode, x, y)) {
 | 
						|
                        u8g2_SetDrawColor(fb, 1);
 | 
						|
                        u8g2_DrawPixelSize(fb, qr_x + x * qr_size, qr_y + y * qr_size, qr_size);
 | 
						|
                    } else {
 | 
						|
                        u8g2_SetDrawColor(fb, 0);
 | 
						|
                        u8g2_DrawPixelSize(fb, qr_x + x * qr_size, qr_y + y * qr_size, qr_size);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        } else {
 | 
						|
            return 255;
 | 
						|
        }
 | 
						|
 | 
						|
        furi_commit(fb_record);
 | 
						|
 | 
						|
        delay(1);
 | 
						|
    }
 | 
						|
 | 
						|
    return 0;
 | 
						|
}
 | 
						|
*/ |