* Add RAW format * F5 stubs for build to pass * Fix saving decoded signal error * Irda: set ISR before starting timer, remove explicit NVIC configuration Co-authored-by: あく <alleteam@gmail.com>
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include <file_reader.h>
 | 
						|
 | 
						|
std::string FileReader::getline(File* file) {
 | 
						|
    std::string str;
 | 
						|
    size_t newline_index = 0;
 | 
						|
    bool found_eol = false;
 | 
						|
    bool max_length_exceeded = false;
 | 
						|
 | 
						|
    while(1) {
 | 
						|
        if(file_buf_cnt > 0) {
 | 
						|
            size_t end_index = 0;
 | 
						|
            char* endline_ptr = (char*)memchr(file_buf, '\n', file_buf_cnt);
 | 
						|
            newline_index = endline_ptr - file_buf;
 | 
						|
 | 
						|
            if(endline_ptr == 0) {
 | 
						|
                end_index = file_buf_cnt;
 | 
						|
            } else if(newline_index < file_buf_cnt) {
 | 
						|
                end_index = newline_index + 1;
 | 
						|
                found_eol = true;
 | 
						|
            } else {
 | 
						|
                furi_assert(0);
 | 
						|
            }
 | 
						|
 | 
						|
            if (max_line_length && (str.size() + end_index > max_line_length))
 | 
						|
                max_length_exceeded = true;
 | 
						|
 | 
						|
            if (!max_length_exceeded)
 | 
						|
                str.append(file_buf, end_index);
 | 
						|
 | 
						|
            memmove(file_buf, &file_buf[end_index], file_buf_cnt - end_index);
 | 
						|
            file_buf_cnt = file_buf_cnt - end_index;
 | 
						|
            if(found_eol) break;
 | 
						|
        }
 | 
						|
 | 
						|
        file_buf_cnt +=
 | 
						|
            fs_api->file.read(file, &file_buf[file_buf_cnt], sizeof(file_buf) - file_buf_cnt);
 | 
						|
        if(file_buf_cnt == 0) {
 | 
						|
            break; // end of reading
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    if (max_length_exceeded)
 | 
						|
        str.clear();
 | 
						|
 | 
						|
    return str;
 | 
						|
}
 | 
						|
 | 
						|
 |