fork of Sam Grove's library
Fork of LogUtil by
LogUtil.h@7:ef45bd2cd9bb, 2013-05-10 (annotated)
- Committer:
- sam_grove
- Date:
- Fri May 10 18:36:27 2013 +0000
- Revision:
- 7:ef45bd2cd9bb
- Parent:
- 6:163b9d47fa87
Changed Serial member to be a pointer rather than a object. Caused contention when using .attach for interrupt handling
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sam_grove | 0:3054bbdace4c | 1 | /** |
sam_grove | 0:3054bbdace4c | 2 | * @file LogUtil.h |
sam_grove | 0:3054bbdace4c | 3 | * @brief Utility to log messages during runtime |
sam_grove | 0:3054bbdace4c | 4 | * @author sam grove |
sam_grove | 0:3054bbdace4c | 5 | * @version 1.0 |
sam_grove | 1:491d2a7f4207 | 6 | * @see http://www.drdobbs.com/cpp/a-lightweight-logger-for-c/240147505 |
sam_grove | 0:3054bbdace4c | 7 | * |
sam_grove | 0:3054bbdace4c | 8 | * Copyright (c) 2013 |
sam_grove | 0:3054bbdace4c | 9 | * |
sam_grove | 0:3054bbdace4c | 10 | * Licensed under the Apache License, Version 2.0 (the "License"); |
sam_grove | 0:3054bbdace4c | 11 | * you may not use this file except in compliance with the License. |
sam_grove | 0:3054bbdace4c | 12 | * You may obtain a copy of the License at |
sam_grove | 0:3054bbdace4c | 13 | * |
sam_grove | 0:3054bbdace4c | 14 | * http://www.apache.org/licenses/LICENSE-2.0 |
sam_grove | 0:3054bbdace4c | 15 | * |
sam_grove | 0:3054bbdace4c | 16 | * Unless required by applicable law or agreed to in writing, software |
sam_grove | 0:3054bbdace4c | 17 | * distributed under the License is distributed on an "AS IS" BASIS, |
sam_grove | 0:3054bbdace4c | 18 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
sam_grove | 0:3054bbdace4c | 19 | * See the License for the specific language governing permissions and |
sam_grove | 0:3054bbdace4c | 20 | * limitations under the License. |
sam_grove | 0:3054bbdace4c | 21 | */ |
sam_grove | 0:3054bbdace4c | 22 | |
sam_grove | 0:3054bbdace4c | 23 | #ifndef LOGUTIL_H |
sam_grove | 0:3054bbdace4c | 24 | #define LOGUTIL_H |
sam_grove | 0:3054bbdace4c | 25 | |
sam_grove | 2:c54746c59ba4 | 26 | #include <stdio.h> |
sam_grove | 2:c54746c59ba4 | 27 | #include <stdlib.h> |
sam_grove | 4:cf2ada8ed11b | 28 | #include "mbed.h" |
sam_grove | 2:c54746c59ba4 | 29 | |
sam_grove | 0:3054bbdace4c | 30 | #define STREAM stdout |
sam_grove | 0:3054bbdace4c | 31 | #define LOG(...) \ |
sam_grove | 0:3054bbdace4c | 32 | fprintf(STREAM, "LOG: %s L#%d ", __PRETTY_FUNCTION__, __LINE__); \ |
sam_grove | 5:1b4f4d4aec8c | 33 | fprintf(STREAM, ##__VA_ARGS__); \ |
sam_grove | 5:1b4f4d4aec8c | 34 | fflush(STREAM) |
sam_grove | 0:3054bbdace4c | 35 | #define WARN(...) \ |
sam_grove | 0:3054bbdace4c | 36 | fprintf(STREAM, "WARN: %s L#%d ", __PRETTY_FUNCTION__, __LINE__); \ |
sam_grove | 5:1b4f4d4aec8c | 37 | fprintf(STREAM, ##__VA_ARGS__); \ |
sam_grove | 5:1b4f4d4aec8c | 38 | fflush(STREAM) |
sam_grove | 0:3054bbdace4c | 39 | #define ERROR(...) \ |
sam_grove | 0:3054bbdace4c | 40 | fprintf(STREAM, "ERROR: %s L#%d ", __PRETTY_FUNCTION__, __LINE__); \ |
sam_grove | 1:491d2a7f4207 | 41 | fprintf(STREAM, ##__VA_ARGS__); \ |
sam_grove | 1:491d2a7f4207 | 42 | fflush(STREAM); \ |
sam_grove | 1:491d2a7f4207 | 43 | exit(1) |
sam_grove | 0:3054bbdace4c | 44 | |
sam_grove | 0:3054bbdace4c | 45 | /** Using the LogUtil class |
sam_grove | 0:3054bbdace4c | 46 | * |
sam_grove | 0:3054bbdace4c | 47 | * Example: |
sam_grove | 0:3054bbdace4c | 48 | * @code |
sam_grove | 0:3054bbdace4c | 49 | * #include "mbed.h" |
sam_grove | 0:3054bbdace4c | 50 | * #include "LogUtil.h" |
sam_grove | 0:3054bbdace4c | 51 | * |
sam_grove | 1:491d2a7f4207 | 52 | * LogUtil logger; |
sam_grove | 0:3054bbdace4c | 53 | * |
sam_grove | 0:3054bbdace4c | 54 | * int main() |
sam_grove | 0:3054bbdace4c | 55 | * { |
sam_grove | 0:3054bbdace4c | 56 | * LOG("This is a log\n"); |
sam_grove | 0:3054bbdace4c | 57 | * WARN("This is a warning\n"); |
sam_grove | 0:3054bbdace4c | 58 | * |
sam_grove | 1:491d2a7f4207 | 59 | * for(int i=0; i<3; ++i) { |
sam_grove | 0:3054bbdace4c | 60 | * LOG("Log message #%d\n", i); |
sam_grove | 0:3054bbdace4c | 61 | * } |
sam_grove | 0:3054bbdace4c | 62 | * |
sam_grove | 1:491d2a7f4207 | 63 | * for(int i=0; i<3; ++i) { |
sam_grove | 0:3054bbdace4c | 64 | * WARN("Warn message #%d\n", i); |
sam_grove | 0:3054bbdace4c | 65 | * } |
sam_grove | 0:3054bbdace4c | 66 | * |
sam_grove | 1:491d2a7f4207 | 67 | * ERROR("This is an error\n"); |
sam_grove | 0:3054bbdace4c | 68 | * } |
sam_grove | 0:3054bbdace4c | 69 | * @endcode |
sam_grove | 0:3054bbdace4c | 70 | */ |
sam_grove | 0:3054bbdace4c | 71 | |
sam_grove | 0:3054bbdace4c | 72 | /** |
sam_grove | 0:3054bbdace4c | 73 | * @class LogUtil |
sam_grove | 0:3054bbdace4c | 74 | * @brief Different ways to log messages having a standard interface |
sam_grove | 0:3054bbdace4c | 75 | */ |
sam_grove | 0:3054bbdace4c | 76 | class LogUtil |
sam_grove | 0:3054bbdace4c | 77 | { |
sam_grove | 7:ef45bd2cd9bb | 78 | private: |
sam_grove | 7:ef45bd2cd9bb | 79 | Serial *_serial; |
sam_grove | 0:3054bbdace4c | 80 | public: |
sam_grove | 0:3054bbdace4c | 81 | |
sam_grove | 0:3054bbdace4c | 82 | /** Construct the LogUtil class and configure |
sam_grove | 0:3054bbdace4c | 83 | */ |
sam_grove | 7:ef45bd2cd9bb | 84 | LogUtil(Serial &serial, uint32_t baudrate = 0); |
sam_grove | 7:ef45bd2cd9bb | 85 | |
sam_grove | 0:3054bbdace4c | 86 | }; |
sam_grove | 0:3054bbdace4c | 87 | |
sam_grove | 0:3054bbdace4c | 88 | |
sam_grove | 0:3054bbdace4c | 89 | #endif |
sam_grove | 0:3054bbdace4c | 90 | |
sam_grove | 0:3054bbdace4c | 91 |